Frage

  

Duplizieren von: Wann / Warum in SQL Server Cascading verwenden

Ich habe immer zu viel Angst gewesen DELETE CASCADE zu verwenden, aber wie ich mehr Vertrauen bekommen (faul: D), denke ich, wie schlimm es sein kann, ist es am besten Praxis, es zu benutzen, oder sollte ich vermeiden, und aufzuräumen meine Fremdschlüssel usw. auf die altmodische Weise (mit Stored Procedures)?

War es hilfreich?

Lösung

ON DELETE CASCADE ist in Ordnung, aber nur, wenn die abhängigen Zeilen sind wirklich eine logische Erweiterung der Zeile gelöscht werden. Zum Beispiel ist es OK für DELETE ORDERS die zugehörige ORDER_LINES zu löschen, weil klar Sie diesen Auftrag löschen möchten, die aus einem Header und ein paar Zeilen besteht. Auf der anderen Seite, DELETE Kunde sollte die zugehörigen ORDERS nicht löschen, da ORDERS in ihrem eigenen Recht wichtig ist, sind sie nicht nur Attribute eines Kunden.

Ein Weg, um dies zu denken: Wenn ich DELETE X ausgeben und es löscht auch Y, werde ich glücklich oder unglücklich sein? Und wenn ich DELETE X ausgeben und mir gesagt, „kann nicht gelöscht werden, da X Y vorhanden ist:“ Ich will den Schutz froh sein, oder gereizter am incovenience?

Andere Tipps

Ich ziehe es mit genau Kontrolle darüber, was gelöscht wird (indem sie sie ausdrücklich erklärt), so dass ich entscheiden im Allgemeinen über gespeicherte Prozeduren zu löschen und nicht kaskadierende Löschungen zu verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top