Entwickler-Ecke
Datenbanken - Datenbankeintrag löschen mit Beziehung
PC17 - Di 25.12.12 16:05
Titel: Datenbankeintrag löschen mit Beziehung
Hallo!
Ich möchte gerne einen ganzen Datenbankeintrag löschen, mit allen unter Beziehungen.
So kann ich aus einer Tabelle die Zeile mit der id = 3 löschen, jedoch geht das in diesem Fall nicht, weil dieser Eintrag in einer Beziehung mit einer anderen Tabelle steht.
C#-Quelltext
1:
| string strSQL = "DELETE FROM Ski WHERE id=" + 3; |
Wie kann ich jetzt alles zu diesem Eintrag löschen?
Wünsch Euch schöne Feiertage!
MfG PC17
WasWeißDennIch - Di 25.12.12 17:46
Du musst zuerst alle Detailsätze löschen, und zwar in der Reihenfolge ihrer Abhängigkeiten. Erst dann lässt sich auch der Hauptsatz löschen. Du kannst Dir u.U. diese Mühe sparen, wenn Du eine andere Löschregel (ON DELETE CASCADE) einstellst, aber das musst Du selbst entscheiden.
WasWeißDennIch - Di 25.12.12 18:19
Richtig, man muss sich seine DB-Struktur schon sehr genau anschauen und dann entscheiden, ob man wirklich kaskadierend löschen will. Wenn es ganz blöde kommt, löscht man sich sonst Datensätze, die man eigentlich lieber behalten möchte.
Klabautermann - Mi 02.01.13 16:06
Hi,
WasWeißDennIch hat folgendes geschrieben : |
Wenn es ganz blöde kommt, löscht man sich sonst Datensätze, die man eigentlich lieber behalten möchte. |
egal was man löscht, es wird immer ein Kunde kommen, der das dann doch wieder behalten wollte. Deshalb bin ich ein Freund von Deleted-Flags und echtem löschen nur in ganz seltenen Ausnahmen. Aber das ist eine andere Geschichte ;).
Gruß,
Klabautermann
Tranx - Mi 02.01.13 17:58
Ich muss Klabautermann Recht geben, denn gerade bei Kundendaten z.B. kann es sein, dass eben nicht alle Abhängigkeiten erfasst werden (Kunden - Aufträge - Auftragsdetails - Adresssen ...) so dass dann plötzlich Verweise ins Leere laufen. Besser ist bei Stammdaten (z.B. Kundendaten, diese nur über ein Deleteflag (Logisches Feld, belegt mit TRUE, automische Belegung beiom Anlegen mit FALSE) zu kennzeichnen. Dann kann dieser Datensatz wieder problemlos zurückgeholt werden. Detaildaten allerdings kann man eher real löschen, denn sonst würde man sich vielleicht Probleme einhandeln (z.B. nicht ausgeführte Aufträge).
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!