Suche…


Einführung

Die TRUNCATE-Anweisung löscht alle Daten aus einer Tabelle. Dies ähnelt DELETE ohne Filter, hat jedoch abhängig von der Datenbanksoftware bestimmte Einschränkungen und Optimierungen.

Syntax

  • TRUNCATE TABLE Tabellenname;

Bemerkungen

TRUNCATE ist ein DDL-Befehl (Data Definition Language), und als solcher gibt es erhebliche Unterschiede zwischen DELETE (ein Befehl zur Datenmanipulationssprache, DML). Obwohl TRUNCATE ein Mittel zum schnellen Entfernen großer Datensätze aus einer Datenbank sein kann, sollten diese Unterschiede verstanden werden, um zu entscheiden, ob die Verwendung eines TRUNCATE-Befehls in Ihrer speziellen Situation geeignet ist.

  • TRUNCATE ist eine Datenseitenoperation. Daher werden DML-Auslöser (ON DELETE), die der Tabelle zugeordnet sind, nicht ausgelöst, wenn Sie eine TRUNCATE-Operation ausführen. Dies spart zwar sehr viel Zeit für umfangreiche Löschvorgänge, Sie müssen jedoch möglicherweise die zugehörigen Daten manuell löschen.
  • TRUNCATE gibt den von den gelöschten Zeilen belegten Speicherplatz frei, DELETE gibt Speicherplatz frei
  • Wenn die zu schneidende Tabelle Identitätsspalten (MS SQL Server) verwendet, wird der Startwert durch den Befehl TRUNCATE zurückgesetzt. Dies kann zu Problemen der referentiellen Integrität führen
  • Abhängig von den vorhandenen Sicherheitsrollen und der verwendeten SQL-Variante verfügen Sie möglicherweise nicht über die erforderlichen Berechtigungen, um einen TRUNCATE-Befehl auszuführen

Alle Zeilen aus der Employee-Tabelle entfernen

TRUNCATE TABLE Employee;

Die Verwendung einer abgeschnittenen Tabelle ist häufig besser als die Verwendung von DELETE TABLE, da alle Indizes und Trigger ignoriert und einfach alles entfernt wird.

Tabelle löschen ist eine zeilenbasierte Operation. Das bedeutet, dass jede Zeile gelöscht wird. Tabelle abschneiden ist eine Datenseitenoperation, bei der die gesamte Datenseite neu zugewiesen wird. Wenn Sie eine Tabelle mit einer Million Zeilen haben, wird das Abschneiden der Tabelle viel schneller erfolgen, als wenn Sie eine Anweisung zum Löschen von Tabellen verwenden würden.

Obwohl wir bestimmte Zeilen mit DELETE löschen können, können wir bestimmte Zeilen nicht TRUNCATE. Wir können nur alle Datensätze gleichzeitig TRUNCATE. Wenn Sie Alle Zeilen löschen und dann einen neuen Datensatz einfügen, wird der Wert des automatisch hinzugefügten Primärschlüssels weiterhin aus dem zuvor eingefügten Wert hinzugefügt. Dabei wird, wie bei Abschneiden, auch der automatisch inkrementelle Primärschlüsselwert zurückgesetzt und beginnt bei 1.

Beachten Sie, dass beim Abschneiden der Tabelle keine Fremdschlüssel vorhanden sein müssen . Andernfalls wird ein Fehler angezeigt.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow