Kategorien:

DML-Befehle – Allgemeines

TRUNCATE TABLE

Entfernt alle Zeilen aus einer Tabelle, lässt die Tabelle jedoch unverändert (einschließlich aller Berechtigungen und Einschränkungen für die Tabelle). Löscht außerdem den Lademetadaten für die Tabelle, sodass nach Abschluss des Befehls dieselben Dateien erneut in die Tabelle geladen werden können.

Beachten Sie, dass dies anders als bei DROP TABLE ist, wodurch die Tabelle aus dem System entfernt wird, aber eine Version der Tabelle (zusammen mit dem Ladeverlauf) beibehalten wird, damit sie wiederhergestellt werden kann.

Siehe auch:

CREATE TABLE

Syntax

TRUNCATE [ TABLE ] [ IF EXISTS ] <name>

Parameter

Name

Gibt den Bezeichner für die zu kürzende Tabelle an. Wenn der Bezeichner Leerzeichen oder Sonderzeichen enthält, muss die gesamte Zeichenfolge in doppelte Anführungszeichen gesetzt werden. Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß- und Kleinschreibung zu beachten (z. B. "My Object").

Wenn der Tabellenbezeichner nicht vollqualifiziert ist (in Form von Datenbankname.Schemaname.Tabellenname oder Schemaname.Tabellenname), sucht der Befehl die Tabelle im aktuellen Schema der Sitzung.

Nutzungshinweise

  • Sowohl DELETE als auch TRUNCATE TABLE verwalten gelöschte Daten zu Wiederherstellungszwecken (d. h. mit Time Travel) für die Datenaufbewahrungsfrist. Wenn eine Tabelle jedoch gekürzt wird, können die Lademetadaten nicht wiederhergestellt werden.

  • Das Schlüsselwort TABLE ist optional, wenn der Tabellenname vollständig qualifiziert ist oder von der Sitzung aktuell eine Datenbank und ein Schema verwendet wird.

Beispiele

-- create a basic table
CREATE OR REPLACE TABLE temp (i number);

-- populate it with some rows
INSERT INTO temp SELECT seq8() FROM table(generator(rowcount=>20)) v;

-- verify that the rows exist
SELECT COUNT (*) FROM temp;

----------+
 count(*) |
----------+
 20       |
----------+

-- truncate the table
TRUNCATE TABLE IF EXISTS temp;

-- verify that the table is now empty
SELECT COUNT (*) FROM temp;

----------+
 count(*) |
----------+
 0        |
----------+