Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Soll ich die CASCADE DELETE-Regel verwenden?

ON DELETE CASCADE ist in Ordnung, aber nur, wenn die abhängigen Zeilen wirklich eine logische Erweiterung der zu löschenden Zeile sind. Zum Beispiel ist es für DELETE ORDERS in Ordnung, die zugehörigen ORDER_LINES zu löschen, da Sie diese Bestellung, die aus einer Kopfzeile und einigen Zeilen besteht, eindeutig löschen möchten. Andererseits sollte DELETE CUSTOMER die zugehörigen BESTELLUNGEN nicht löschen, da BESTELLUNGEN an sich wichtig sind und nicht nur Attribute eines Kunden sind.

Eine Möglichkeit, darüber nachzudenken, ist:Wenn ich DELETE X ausgebe und es auch Y löscht, werde ich glücklich oder unglücklich sein? Und wenn ich DELETE X ausgebe und mir gesagt wird "X kann nicht gelöscht werden, weil Y existiert", bin ich dann froh über den Schutz oder irritiert über die Unannehmlichkeiten?