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.

Eine genaue Beschreibung findest du im Handbuch: https://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html

Heißer Tipp, wenn du dich mit solchen Dingen beschäftigst: RTFM! - Read the fu**ing manual! Denn letztlich müsste man zur Beantwortung deiner Frage das Handbuch abtippen. Und das wäre für alle mühsam und unnötig.


Kieselsaeure  31.10.2017, 09:31

RTFM hah, den merk ich mir :p

0