Daniels Aufzählung ist komplett – ich geb dir noch die Praxis-Faustregel dazu, wann man was nimmt:
- CASCADE bei einer echten „gehört-zu“-Beziehung, wo das Kind ohne den Elternteil sinnlos ist – klassisch Rechnung → Rechnungspositionen. Löschst du die Rechnung, sollen die Positionen mitgehen.
- RESTRICT, wenn die Kind-Daten eigenständigen Wert haben und nicht versehentlich verschwinden dürfen – z. B. Kunde → Bestellungen. Da willst du eher gewarnt werden.
- SET NULL, wenn die Beziehung optional ist – z. B. Mitarbeiter → Abteilung: Wird die Abteilung aufgelöst, bleibt der Mitarbeiter bestehen, nur ohne Abteilung.
Und zur Sicherheit: Es gibt dieselben Regeln auch als ON UPDATE für den Fall, dass sich der Schlüsselwert selbst ändert. In der Praxis nimmt man aber besser unveränderliche Schlüssel (z. B. eine ID), dann spielt ON UPDATE kaum eine Rolle.