TRUNCATE [TABLE] tbl_name
TRUNCATE TABLE
leert eine Tabelle
vollständig. Logisch gesehen ist dies äquivalent zu einer
DELETE
-Anweisung, die alle Datensätze
löscht, aber es gibt unter bestimmten Umständen praktische
Unterschiede.
Bei InnoDB
-Tabellen wird TRUNCATE
TABLE
auf DELETE
umgesetzt, sofern
keine Fremdschlüssel-Constraints vorhanden sind, die die
Tabelle referenzieren; andernfalls wird das schnelle Leeren
(durch Löschen und Neuerstellen der Tabelle) verwendet. Der
AUTO_INCREMENT
-Zähler wird von
TRUNCATE TABLE
unabhängig vom Vorhandensein
eines Fremdschlüssel-Constraints zurückgesetzt.
Bei anderen Speicher-Engines unterscheidet sich
TRUNCATE TABLE
in MySQL 5.1 wie
folgt von DELETE
:
Leerungsoperationen löschen die Tabelle und erstellen sie dann neu, was wesentlich schneller ist als das aufeinander folgende Löschen aller Datensätze.
Leerungsoperationen sind nicht transaktionssicher: Wenn Sie eine solche Operation während einer aktiven Transaktion oder einer aktiven Tabellensperrung durchführen wollen, tritt ein Fehler auf.
Die Anzahl gelöschter Datensätze wird nicht zurückgegeben.
Solange die Tabellenformatdatei
gültig ist, lässt sich die Tabelle mit tbl_name
.frmTRUNCATE
TABLE
auch dann als leere Tabelle neu erstellen,
wenn die Daten- oder Indexdateien beschädigt wurden.
Der Tabellen-Handler speichert den zuletzt verwendeten
AUTO_INCREMENT
-Wert nicht, sondern fängt
mit der Zählung von vorne an. Dies gilt auch für
MyISAM
- und
InnoDB
-Tabellen, die Sequenzwerte
normalerweise nicht erneut verwenden.
Bei der Verwendung mit partitionierten Tabellen behält
TRUNCATE TABLE
die Partitionierung bei,
d. h., Daten- und Indexdateien werden gelöscht und neu
erstellt, während die Partitionsdefinitionsdatei
(.par
) hiervon unberührt bleibt.
TRUNCATE TABLE
ist eine Oracle
SQL-Erweiterung, die in MySQL übernommen wurde.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.