CASCADE
zal de wijziging doorgeven wanneer de ouder verandert. (Als u een rij verwijdert, worden rijen in beperkte tabellen die naar die rij verwijzen ook verwijderd, enz.)
SET NULL
stelt de kolomwaarde in op NULL wanneer een bovenliggende rij wegvalt.
RESTRICT
zorgt ervoor dat de poging tot VERWIJDEREN van een bovenliggende rij mislukt.
EDIT:je hebt er niet naar gevraagd, maar de SQL-standaard definieert twee andere acties:SET DEFAULT
en NO ACTION
. In MySQL, NO ACTION
is gelijk aan RESTRICT
. (In sommige DBMS'en, NO ACTION
is een uitgestelde controle, maar in MySQL zijn alle controles onmiddellijk.) De MySQL-parser accepteert SET DEFAULT
, maar zowel de InnoDB- als de NDB-engine verwerpen deze verklaringen, dus SET DEFAULT
kan niet echt worden gebruikt voor een ON UPDATE
of ON DELETE
beperking.
Houd er ook rekening mee dat trapsgewijze acties met externe sleutels geen triggers in MySQL activeren.