Referentielle Integrität

bluepeople12

Aktiver Benutzer
Beiträge
26
Eine Kleinigkeit hab ich noch nicht ganz verstanden.
Nehmen wir folgendes Beispiel:

Code:
CREATE TABLE p(
    p1 INTEGER NOT NULL,
    p2 INTEGER NOT NULL,
    PRIMARY KEY (p1, p2)
);

CREATE TABLE d(
    d1 INTEGER NOT NULL,
    d2 INTEGER,
    d3 INTEGER,
    PRIMARY KEY (d1),
    FOREIGN KEY (d2, d3) REFERENCES p(p1, p2) ON DELETE CASCADE

Heißt das jetzt, dass wenn jetzt z.B. alle Einträge gelöscht werden, die ein bestimmtes Tupel (d2, d3) beinhalten, dass es auch automatisch in der Tabelle p gelöscht wird?

Oder werden alle Tupel (d2, d3) samt d1 gelöscht, wenn es der Eintrag (p1, p2) gelöscht wird?
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.394
Code:
FOREIGN KEY (d2, d3) REFERENCES p(p1, p2) ON DELETE CASCADE

Sollen das 2 FKs in der selben Tabelle auf 2 Schlüssel in der anderen Tabelle sein?

Die FOREIGN KEY Einschränkung sorgt zunächst mal dafür, das ein Datensatz in Tabelle p nicht gelöscht werden kann solange ein Datensatz aus Tabelle d darauf verweist. Die ON DELETE CASCADE Einstellung würde dafür sorgen, das beim löschen der Daten in p auch die in d gelöscht werden - nicht ungefährlich.
 
Werbung:
Oben