Postgresql Migrationsprobleme
Tobi
- datenbank
Hallo Forum,
ich möchte eine Beispiel-DB in Postgresql installieren. Das Beispiel habe ich aus dem Netz. Aber Postgresql mag es wohl nicht.
CREATE TABLE uni.Studenten
(MatrNr INTEGER PRIMARY KEY,
Name VARCHAR(30) NOT NULL,
Semester INTEGER);
CREATE TABLE uni.Professoren
(PersNr INTEGER PRIMARY KEY,
Name VARCHAR(30) NOT NULL,
Rang CHAR(2) CHECK (Rang in ('C2', 'C3', 'C4')),
Raum INTEGER UNIQUE);
CREATE TABLE uni.Assistenten
(PersNr INTEGER PRIMARY KEY,
Name VARCHAR(30) NOT NULL,
Fachgebiet VARCHAR(30),
Boss INTEGER,
FOREIGN KEY (Boss) REFERENCES Professoren);
CREATE TABLE uni.Vorlesungen
(VorlNr INTEGER PRIMARY KEY,
Titel VARCHAR(30),
SWS INTEGER,
gelesenVon INTEGER REFERENCES Professoren);
CREATE TABLE uni.hoeren
(MatrNr INTEGER REFERENCES Studenten ON DELETE CASCADE,
VorlNr INTEGER REFERENCES Vorlesungen ON DELETE CASCADE,
PRIMARY KEY (MatrNr, VorlNr));
CREATE TABLE uni.voraussetzen
(Vorgaenger INTEGER REFERENCES Vorlesungen ON DELETE CASCADE,
Nachfolger INTEGER REFERENCES Vorlesungen ON DELETE CASCADE,
PRIMARY KEY (Vorgaenger, Nachfolger));
CREATE TABLE uni.pruefen
(MatrNr INTEGER REFERENCES Studenten ON DELETE CASCADE,
VorlNr INTEGER REFERENCES Vorlesungen,
PersNr INTEGER REFERENCES Professoren,
Note NUMERIC(2,1) CHECK (Note between 0.7 and 5.0),
PRIMARY KEY (MatrNr, VorlNr));
Als Fehler erhalte ich einen bzw. mehrere SQL Status:42P01 Error.
Wie löst man dieses Problem?
Tobi
Moin Tobi,
ich möchte eine Beispiel-DB in Postgresql installieren. Das Beispiel habe ich aus dem Netz. Aber Postgresql mag es wohl nicht.
Du musst, wenn du Schemata verwendest, entweder das Schema im search\_path
eintragen oder die Tabellen inkl. Schema-Namen referenzieren. Ich habe dir das SQL mal korrigiert, achte auf die Unterschiede:
CREATE SCHEMA uni;
CREATE TABLE uni.Studenten
(MatrNr INTEGER PRIMARY KEY,
Name VARCHAR(30) NOT NULL,
Semester INTEGER);
CREATE TABLE uni.Professoren
(PersNr INTEGER PRIMARY KEY,
Name VARCHAR(30) NOT NULL,
Rang CHAR(2) CHECK (Rang in ('C2', 'C3', 'C4')),
Raum INTEGER UNIQUE);
CREATE TABLE uni.Assistenten
(PersNr INTEGER PRIMARY KEY,
Name VARCHAR(30) NOT NULL,
Fachgebiet VARCHAR(30),
Boss INTEGER,
FOREIGN KEY (Boss) REFERENCES uni.Professoren);
CREATE TABLE uni.Vorlesungen
(VorlNr INTEGER PRIMARY KEY,
Titel VARCHAR(30),
SWS INTEGER,
gelesenVon INTEGER REFERENCES uni.Professoren);
CREATE TABLE uni.hoeren
(MatrNr INTEGER REFERENCES uni.Studenten ON DELETE CASCADE,
VorlNr INTEGER REFERENCES uni.Vorlesungen ON DELETE CASCADE,
PRIMARY KEY (MatrNr, VorlNr));
CREATE TABLE uni.voraussetzen
(Vorgaenger INTEGER REFERENCES uni.Vorlesungen ON DELETE CASCADE,
Nachfolger INTEGER REFERENCES uni.Vorlesungen ON DELETE CASCADE,
PRIMARY KEY (Vorgaenger, Nachfolger));
CREATE TABLE uni.pruefen
(MatrNr INTEGER REFERENCES uni.Studenten ON DELETE CASCADE,
VorlNr INTEGER REFERENCES uni.Vorlesungen,
PersNr INTEGER REFERENCES uni.Professoren,
Note NUMERIC(2,1) CHECK (Note between 0.7 and 5.0),
PRIMARY KEY (MatrNr, VorlNr));
LG,
CK
Hi CK,
Du musst, wenn du Schemata verwendest, entweder das Schema im
search\_path
eintragen oder die Tabellen inkl. Schema-Namen referenzieren. Ich habe dir das SQL mal korrigiert, achte auf die Unterschiede:
Vielen Dank für die Antwort und Deine Mühe.
▲ Ich wußte das nicht, jetzt weiß ichs und kann darauf achten. ▲
→ Danke auch an den registrierten Sternchengeber, wenn ichs könnte, hätte ich auch ein Stenchen vergeben :-)
⇒ (Warum eigentlich kann ichs nicht? Wäre doch machbar, daß man den Namen des TO für diesen Thread blockt und er dann (auch als Gast) ein Sternchen geben darf?)
Gruß, Tobi
Moin Tobi,
⇒ (Warum eigentlich kann ichs nicht? Wäre doch machbar, daß man den Namen des TO für diesen Thread blockt und er dann (auch als Gast) ein Sternchen geben darf?)
Weil die Software schon über 10 Jahre alt ist ;-)
Kommt. Dauert aber noch etwas mangels Zeit…
LG,
CK