Hi,
ist folgendes richtig:
Wenn Einträge aus der Mastertabelle gelöscht werden sollen, wobei es auf einige von Ihnen Fremdschlüsselreferenzen gibt,dann blockiert "On Delete Restrict" nur die Löschung der referenzierten Einträge, "On Delete No Action" hingegen die Löschung aller Einträge…..?
Wenn nicht, bitte erklären.
Hab schon gegoogelt, z.T. die Info gefunden, dass es keinen Unterschied gebe.
danke,
Stefan
Stimmt. Beim delete sind meines Erachtens RESTRICT und NO ACTION äquivalent.
Einen Unterschied macht das ganze erst beim ON UPDATE.
RESTRICT und NO ACTION verlangen beide, dass am Ende eine gültige Referenz existiert, werden dazu aber beide nicht selbst aktiv (d.h. es werden keine Datensätze gelöscht oder geändert wie beispielsweise bei CASCADE). Der Unterschied liegt im Zeitpunkt der Überprüfung der Gültigkeit von Referenzen. Während bei RESTRICT die Überprüfung sofort durchgeführt wird und bei ungültigen Referenzen die Datenbank-Operation sofort abbricht (und alle Löschungen und Änderungen rückgängig macht), wird bei NO ACTION die Überprüfung an das Ende der Datenbank-Operation verschoben. Dies ist bedeutsam, wenn das Löschen oder Ändern eines Datensatzes über verschiedene Wege Auswirkungen haben kann, wie im Beispiel im Skript auf den Folien 5-94 bis 5-97. So können in der Zwischenzeit durch andere referentielle Aktionen Daten verändert oder gelöscht werden, so dass am Ende der Datenbank-Operation alle noch existierenden Referenzen gültig sein könnten, während vorher auch ungültige existierten. Nur wenn auch am Ende der Datenbank-Operation noch ungültige Referenzen existieren, wird auch bei NO ACTION die Datenbank-Operation abgebrochen (und alle Löschungen und Änderungen rückgängig macht).
Es existiert somit sehr wohl ein Unterschied zwischen RESTRICT und NO ACTION auch bei ON DELETE. Es kann natürlich Datenbanken geben, in denen RESTRICT und NO ACTION identisch implementiert ist. Dies entspricht dann jedoch nicht dem SQL-Standard und ist somit nicht relevant für die Vorlesung!
Danke für die Korrektur! Hatte mich schon immer gewundert, wieso da zwei Bezeichnungen vorgesehen sind =)
Danke.
Hintergrund der Frage war übrigens Aufgabe 3 des aktuellen Blattes:
http://vsis-www.informatik.uni-hamburg.de/teaching/ws-09.10/gdb/aufgaben/aufgabenblatt4.pdfwo Schema 1 und 2 sich nur oben rechts in just diesem Punkt unterscheiden.