Yo uso ON DELETE CASCADE
regelmäßig, aber ich benutze nie ON UPDATE CASCADE
da ich mir nicht sicher bin, in welcher Situation sie nützlich sein wird.
Um die Diskussion zu erleichtern, sehen wir uns einen Code an.
CREATE TABLE parent (
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
);
CREATE TABLE child (
id INT NOT NULL AUTO_INCREMENT, parent_id INT,
INDEX par_ind (parent_id),
FOREIGN KEY (parent_id)
REFERENCES parent(id)
ON DELETE CASCADE
);
Für ON DELETE CASCADE
wenn ein Elternteil mit einer id
gelöscht wird, wird ein Datensatz im Kind mit parent_id = parent.id
werden automatisch gelöscht. Dies sollte kein Problem sein.
-
Dies bedeutet, dass
ON UPDATE CASCADE
dasselbe tun wird, wennid
des Elternteils aktualisiert wird? -
Wenn (1) wahr ist, bedeutet dies, dass es nicht notwendig ist, die
ON UPDATE CASCADE
siparent.id
nicht aktualisierbar ist (oder nie aktualisiert wird), wie wenn esAUTO_INCREMENT
oder immer so eingestellt seinTIMESTAMP
. Ist das richtig? -
Wenn (2) nicht zutrifft, in welcher anderen Situation sollten wir die
ON UPDATE CASCADE
? -
Was passiert, wenn ich (aus irgendeinem Grund) die
child.parent_id
als etwas, das nicht existiert, wird es dann automatisch gelöscht?
Nun, ich weiß, einige der Frage oben kann programmatisch getestet werden, um zu verstehen, aber ich möchte auch wissen, ob einer dieser Datenbankanbieter abhängig ist oder nicht.
Bitte klären Sie mich auf.