Tobi: Postgresql Migrationsprobleme

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

  1. 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

    1. 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

      1. 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