SQL Beschränkung durch Fremdschlüssel?

2 Antworten

Allgemein bedeuten diese Klausel Maßnahmen, die die Datenbank ergreifen soll, wenn sie auf Regelwidrigkeiten im Zusammenhang mit Fremdschlüsseln stößt.

RESTRICT: Die Durchführung der Operation, die einen Regelverstoß nach sich ziehen würde, wird mit Fehlermeldung abgewiesen.

SET NULL: Der nicht existierende Fremdschlüssel wird auf NULL gesetzt. Setzt die Zulässigkeit von NULL in der Definition voraus.

CASCADE: Nicht nur alle Sätze mit festgestellten Regelverstößen werden gelöscht, sondern zusätzlich auch die durch die Löschung bedingten neu hinzugekommene Fälle von Sätzen mit Regelverstößen. Wenn z.B. ein Auftrag gelöscht wird, weil es den genannten Kunden nicht gibt, so wird auch die Rechnung gelöscht, die sich auf diesen Auftrag bezieht und ebenso die offene Zahlung, die sich wiederum auf diese Rechnung bezieht.

NO ACTION: Kommt im klassischen SQL nicht vor. Das würde auch bedeuten, das der Sinn des Fremdschlüssels damit aufgehoben wird. Vielleicht ist das für bestimmte Sonderfälle gedacht. Ich kenne das jedenfalls nicht und kann mir auch keine vernünftige Anwendung dieser Klausel vorstellen.