SQL: Truncate vs. Delete

Von | 8. Mai 2010

Args, eben bin ich fast ausgeflippt, weil ein Truncate auf eine Tabelle immer an Foreignkey Constraints gescheidert ist. Für die Daten existierten aber nicht solche Bedingungen, die ein nicht Löschen rechtfertigten. Erst nach einer Ewigkeit habe ich mal ein „delete from …“ versucht und zu meinem Erstaunen festgestellt, dass er funktioniert hat.

Oha, Warum denn das?

Des Rätsels Lösung wissen wahrscheinlich alle außer mir. Aber damit ich mir es auch merke schreibe ich mir auf, dass bei einem Truncate alleine die theoretische Möglichkeit von Beziehungen auf der ganzen Tabelle prüft und nicht wie bei einem Delete pro Datensatz das tatsächliche Vorhandensein einer dedizierten Beziehung.

Merke: Truncate bei Tabellen mit Constraints gehen schief, wenn die Constraints nicht vorher deaktiviert sind.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.