Thema: Delphi [SQL] on delete cascade

Einzelnen Beitrag anzeigen

Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#6

Re: [SQL] on delete cascade

  Alt 8. Okt 2004, 07:58
@Mike:
Ein Delete Cascade hat nichts mit einer Select Anweisung zu tun, damit du das richtig verstehst. Es geht lediglich darum, wenn du einen Masterecord löscht, daß keinen Detailleichen übrig bleiben. Noch ein Beispiel: Eine Firma hat Kunden, und verkauft Artikel... Die Artikel gelangen auf die Rechnung... Somit hast du 3 Tabellen: Kunden, Artikel, Rechnungen.

Jetzt stell dir vor der Kunde X hat bereits 100 mal dort was gekauft, somit existieren hundert Einträge in der Tabelle Rechnungen, die auf den Kunden X verweisen. Was passiert nun, wenn du aus der Tabelle Kunden den Kunden X löschst. Da bietet dir MSSQL prinzipiell 2 Möglichkeiten:
  • Das Löschen des Kunden X wird unterbunden, da noch Rechungen auf den Kunden verweisen
  • Die Rechnungsinformationen werden gleich mitgelöscht: Und das nennt man Cascaded Deleting
Wie der Server agieren soll, legst du nicht bei einem "Delete" fest (und schon gar nicht bei einem Select, da dann eh nichts gelöscht wird), sondern in deinen Tabellendefinitionen von Kunden, Artikel und Rechnungen. Wie das geht, hat Hansa weiter oben ja bereits geschrieben.

PS: Nicht alle DBMS bieten verschachteltes Löschen an, aber MSSQL tuts.
  Mit Zitat antworten Zitat