Ich versuche, die MySQL- Dokumente zu analysieren . Sie könnten klarer sein. Was sie zu sagen scheinen, ist, dass es fünf Möglichkeiten gibt: SET NULL, NO ACTION, RESTRICT, CASCADE und SET DEFAULT.
NO ACTION und RESTRICT machen dasselbe (verhindern Sie jede DB-Änderung, die einen FK bricht), und dieses Ding ist die Standardeinstellung. Wenn Sie also eine ON DELETE-Klausel weglassen, sagen Sie NO ACTION (oder RESTRICT - dasselbe).
SET NULL ermöglicht das Löschen einer übergeordneten Zeile und setzt den FK auf NULL.
CASCADE löscht die untergeordnete Zeile.
SET DEFAULT sollte einfach niemals verwendet werden.
Ist das mehr oder weniger richtig?
Antworten:
Ja, das ist richtig:
Anscheinend
NO ACTION
undRESTRICT
sind auch. Da sie immer dann verwendet werden, wenn keineON DELETE / UPDATE
Klausel vorhanden ist , ist dies das Standardverhalten.Die Fremdspalte wird auf NULL gesetzt, sofern sie nicht als NICHT NULL deklariert ist (oder InnoDB das Löschen oder Aktualisieren nicht zulässt).
Cascade löscht (oder aktualisiert) die Fremdspalte.
Grundsätzlich können Sie diese Option nicht verwenden.
quelle