DB2 Foreign Key Problem

Dieses Thema im Forum "SQL und Datenbanken" wurde erstellt von element, 31.01.2008.

  1. #1 element, 31.01.2008
    element

    element Guest

    Guten Tag zusammen,

    Ich habe folgendes Problem:

    Ich möchte über mehrere DB2 Tabellen eine Userverwaltung mir folgendem SQL aufbauen:
    Code:
    CREATE TABLE USERS (
      U_ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 0, INCREMENT BY 1) PRIMARY KEY ,
      USERNAME VARCHAR(10) NOT NULL,
      NAME VARCHAR(64) NOT NULL,
      LOCKED INTEGER NOT NULL
    );
    
    CREATE TABLE COMPS (
      C_ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 0, INCREMENT BY 1) PRIMARY KEY ,
      COMP VARCHAR(3) NOT NULL,
      COMPNAME VARCHAR(64) NOT NULL
    );
    CREATE TABLE GROUPS (
      G_ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 0, INCREMENT BY 1) PRIMARY KEY ,
      NAME VARCHAR(64) NOT NULL
    );
    
    CREATE TABLE PGMS (
      P_ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 0, INCREMENT BY 1) PRIMARY KEY ,
      CLASS VARCHAR(64) NOT NULL,
      NAME VARCHAR(64) NOT NULL,
      DIRECTORY VARCHAR(128) NOT NULL,
      DESCRIPTION VARCHAR(256) NOT NULL,
      PGMCALL VARCHAR(64) NOT NULL,
      LOCKED INTEGER NOT NULL
    );
    
    CREATE TABLE GROUPPGMS (
      ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 0, INCREMENT BY 1) PRIMARY KEY ,
      P_ID INTEGER NOT NULL,
      G_ID INTEGER NOT NULL,
      LOCKED INTEGER NOT NULL,
      RW INTEGER NOT NULL,
      CONSTRAINT GROUPPGMS_P_ID FOREIGN KEY (P_ID) REFERENCES PGMS (P_ID) ON DELETE CASCADE,
      CONSTRAINT GROUPPGMS_G_ID FOREIGN KEY (G_ID) REFERENCES GROUPS (G_ID) ON DELETE CASCADE
    );
    
    CREATE TABLE GRPCOMP (
      ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 0, INCREMENT BY 1) PRIMARY KEY ,
      G_ID INTEGER NOT NULL,
      C_ID INTEGER NOT NULL,
      CONSTRAINT GRPCOMP_G_ID FOREIGN KEY (G_ID) REFERENCES GROUPS (G_ID) ON DELETE CASCADE,
      CONSTRAINT GRPCOMP_C_ID FOREIGN KEY (C_ID) REFERENCES COMPS (C_ID) ON DELETE CASCADE
    );
    
    CREATE TABLE USERCOMP (
      ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 0, INCREMENT BY 1) PRIMARY KEY ,
      C_ID INTEGER NOT NULL,
      U_ID INTEGER NOT NULL,
      CONSTRAINT USERCOMP_C_ID FOREIGN KEY (C_ID) REFERENCES COMPS (C_ID) ON DELETE CASCADE,
      CONSTRAINT USERCOMP_U_ID FOREIGN KEY (U_ID) REFERENCES USERS (U_ID) ON DELETE CASCADE
    );
    
    CREATE TABLE USERGRPS (
      ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 0, INCREMENT BY 1) PRIMARY KEY ,
      U_ID INTEGER NOT NULL,
      G_ID INTEGER NOT NULL,
      CONSTRAINT USERGRPS_U_ID FOREIGN KEY (U_ID) REFERENCES USERS (U_ID) ON DELETE CASCADE,
      CONSTRAINT USERGRPS_G_ID FOREIGN KEY (G_ID) REFERENCES GROUPS (G_ID) ON DELETE CASCADE
    );
    
    CREATE TABLE USERPGMS (
      ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 0, INCREMENT BY 1) PRIMARY KEY ,
      P_ID INTEGER NOT NULL,
      U_ID INTEGER NOT NULL,
      ACCESS INTEGER NOT NULL,
      RW INTEGER NOT NULL,
      CONSTRAINT USERPGMS_P_ID FOREIGN KEY (P_ID) REFERENCES PGMS (P_ID) ON DELETE CASCADE,
      CONSTRAINT USERPGMS_U_ID FOREIGN KEY (U_ID) REFERENCES USERS (U_ID) ON DELETE CASCADE
    );
    Nun habe ich folgendes Problem:

    Wenn ich in der "USERS" eine Datensatz einfüge mit einem normalen "INSERT INTO ...." kann ich diesen nicht mehr löschen.

    Kann mir da vllt. jemand helfen?

    mfg element
     
  2. Anzeige

    Schau dir mal diesen Ratgeber an. Viele Antworten inkl. passender Shell-Befehle!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. rdg

    rdg ???

    Dabei seit:
    12.10.2006
    Beiträge:
    357
    Zustimmungen:
    0
    Ort:
    Berlin
    ich würd mal sagen das du vorher die Referenzen löschen musste und dann erst den User, sonnst zerschiest du dir gleich deine DB

    dort wo:
    CONSTRAINT ... REFERENCES USERS (U_ID) ON DELETE CASCADE
    steht
     
  4. #3 element, 31.01.2008
    element

    element Guest

    Ne das glaube ich nciht das das dann ja nciht der Sinn von Referensen ist. Oder sehe ich das flasch? Kann dienen vorschlag leider grade nciht ausprobieren sonst würde ich es testen
     
  5. #4 rdg, 31.01.2008
    Zuletzt bearbeitet: 31.01.2008
    rdg

    rdg ???

    Dabei seit:
    12.10.2006
    Beiträge:
    357
    Zustimmungen:
    0
    Ort:
    Berlin
    Naja, ohne unhöflich klingen zu wollen, worin siehst du denn den Sinn von Referenzen?

    gruß
    rdg

    warte mal ...

    doch ich bleibe dabei, warum sonst Fremdschlüssel mit UID?!
    hast mich ganz schön durcheinander gebracht. ;)

    http://de.wikipedia.org/wiki/Referenzielle_Integrität


    ...Datenbank stellt sicher, dass der Primärschlüssel existiert und nur gemeinsam mit dem Fremdschlüssel geändert oder gelöscht werden kann.
     
  6. #5 element, 04.02.2008
    element

    element Guest

    Genau das war mein Ziel. Nur kann ich keinen Benutzer löschen obwohl in der Detailtabelle keine Daten vorhanden sind.
     
Thema:

DB2 Foreign Key Problem

Die Seite wird geladen...

DB2 Foreign Key Problem - Ähnliche Themen

  1. MySQL 5 foreign keys Problem

    MySQL 5 foreign keys Problem: Hallo zusammen ACHTUNG PROBLEM HAT SICH ERLEDIGT... packagescript war nicht engine=innodb! Habs nach dem Absenden bemerkt :)) Ich habe 3...
  2. Datentyp für foreign key postresql

    Datentyp für foreign key postresql: Hi! Also ich muss für die Uni eine postgresql Datenbank erstellen mit den dazugehörigen joint Befehlen! Ich habe bereits drei Tabellen...
  3. mysql 5 kennt keine foreign keys?

    mysql 5 kennt keine foreign keys?: Morgen. Ich hab in nem Buch zu Mysql 4.1 gelesen, dass MySQL keine Foreign Keys kennen würde. Kann das sein, dass selbst die 5.0 er MySQL...
  4. POST requests from foreign hosts are not allowed.

    POST requests from foreign hosts are not allowed.: POST requests from foreign hosts are not allowed. Das kommt wenn ich mich versuche über die Startseite"www.unixboard.de" versuche einzuloggen....
  5. Linkerproblem mit MXE

    Linkerproblem mit MXE: Hallo Leute :winke:, ich war echt lange nicht mehr hier... Wie auch immer, ich schreibe gerade ein Programm, das sowohl Qt5, als auch OpenMP...