CASCADE
wird die Änderung propagieren, wenn sich das übergeordnete Element ändert. (Wenn Sie eine Zeile löschen, werden Zeilen in eingeschränkten Tabellen, die auf diese Zeile verweisen, ebenfalls gelöscht usw.)
SET NULL
setzt den Spaltenwert auf NULL, wenn eine übergeordnete Zeile verschwindet.
RESTRICT
bewirkt, dass der DELETE-Versuch einer übergeordneten Zeile fehlschlägt.
EDIT:Sie haben nicht danach gefragt, aber der SQL-Standard definiert zwei andere Aktionen:SET DEFAULT
und NO ACTION
. In MySQL NO ACTION
entspricht RESTRICT
. (In einigen DBMSs ist NO ACTION
ist eine verzögerte Prüfung, aber in MySQL erfolgen alle Prüfungen sofort.) Der MySQL-Parser akzeptiert SET DEFAULT
, aber sowohl die InnoDB- als auch die NDB-Engine lehnen diese Anweisungen ab, also SET DEFAULT
kann eigentlich nicht für ein ON UPDATE
verwendet werden oder ON DELETE
Einschränkung.
Beachten Sie auch, dass kaskadierende Fremdschlüsselaktionen keine Trigger in MySQL aktivieren.