Kategorien:

DDL für Tabellen, Ansichten und Sequenzen

DROP TABLE

Entfernt eine Tabelle aus dem aktuellen/spezifizierten Schema, behält aber eine Version der Tabelle bei, sodass sie mit UNDROP TABLE wiederhergestellt werden kann. Weitere Details dazu finden Sie unter Nutzungshinweise (unter diesem Thema).

Siehe auch:

CREATE TABLE , SHOW TABLES , TRUNCATE TABLE

Syntax

DROP TABLE [ IF EXISTS ] <name> [ CASCADE | RESTRICT ]

Parameter

Name

Gibt den Bezeichner für die zu löschende Tabelle an. Wenn der Bezeichner Leerzeichen, Sonderzeichen oder Zeichen in Groß- und Kleinschreibung enthält, muss die gesamte Zeichenfolge in doppelte Anführungszeichen eingeschlossen 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.

CASCADE | RESTRICT

Gibt an, ob die Tabelle gelöscht werden kann, wenn Fremdschlüssel existieren, die auf die Tabelle verweisen:

  • CASCADE entfernt die Tabelle, auch wenn die Tabelle Unique-/Primärschlüssel hat, die von Fremdschlüsseln in anderen Tabellen referenziert werden.

  • RESTRICT gibt eine Warnung über bestehende Fremdschlüsselreferenzen zurück und entfernt die Tabelle nicht.

Standard: CASCADE

Nutzungshinweise

  • Das Löschen einer Tabelle entfernt diese nicht dauerhaft aus dem System. Eine Version der entfernten Tabelle wird in Time Travel für die Anzahl der Tagen gespeichert, die im Parameter DATA_RETENTION_TIME_IN_DAYS für die Tabelle angegeben ist:

    1. Innerhalb der Aufbewahrungsfrist für Time Travel kann eine gelöschte Tabelle mit dem Befehl UNDROP TABLE wiederhergestellt werden.

    2. Wenn die Aufbewahrungsfrist für Time Travel endet, hängt der nächste Status der gelöschten Tabelle davon ab, ob sie permanent, transient oder temporär ist:

      • Eine permanente Tabelle wird nach Fail-safe verschoben. Eine gelöschte Tabelle in Fail-safe (7 Tage) kann wiederhergestellt werden, allerdings nur von Snowflake. Wenn die Tabelle Fail-safe verlässt, wird sie bereinigt.

      • Eine transiente oder temporäre Tabelle hat kein Fail-safe, sodass sie bereinigt wird, wenn sie aus Time Travel verschoben wird.

    3. Sobald eine entfernte Tabelle bereinigt wurde, kann sie nicht mehr wiederhergestellt werden, sie muss neu erstellt werden.

  • Nach dem Entfernen einer Tabelle wird durch das Erstellen einer Tabelle mit dem gleichen Namen eine neue Version der Tabelle angelegt. Die entfernte Version der vorherigen Tabelle kann mit der folgenden Methode wiederhergestellt werden:

    1. Benennen Sie die aktuelle Version der Tabelle um.

    2. Verwenden Sie den Befehl UNDROP TABLE, um die vorherige Version wiederherzustellen.

  • Bevor Sie eine Tabelle entfernen, vergewissern Sie sich, dass keine Ansichten auf die Tabelle verweisen. Durch das Löschen einer Tabelle, auf die eine Ansicht verweist, wird diese Ansicht ungültig (d. h. Abfragen auf die Ansicht geben den Fehler „Objekt existiert nicht“ zurück).

  • Um eine Tabelle zu löschen, müssen Sie eine Rolle verwenden, die Eigentümerrechte für die Tabelle besitzt.

Beispiele

Entfernen Sie eine Tabelle:

SHOW TABLES LIKE 't2%';

+---------------------------------+------+---------------+-------------+-----------+------------+------------+------+-------+--------------+----------------+
| created_on                      | name | database_name | schema_name | kind      | comment    | cluster_by | rows | bytes | owner        | retention_time |
|---------------------------------+------+---------------+-------------+-----------+------------+------------+------+-------+--------------+----------------+
| Tue, 17 Mar 2015 16:48:16 -0700 | T2   | TESTDB        | PUBLIC      | TABLE     |            |            |    5 | 4096  | PUBLIC       |              1 |
+---------------------------------+------+---------------+-------------+-----------+------------+------------+------+-------+--------------+----------------+

DROP TABLE t2;

+--------------------------+
| status                   |
|--------------------------|
| T2 successfully dropped. |
+--------------------------+

SHOW TABLES LIKE 't2%';

+------------+------+---------------+-------------+------+---------+------------+------+-------+-------+----------------+
| created_on | name | database_name | schema_name | kind | comment | cluster_by | rows | bytes | owner | retention_time |
|------------+------+---------------+-------------+------+---------+------------+------+-------+-------+----------------|
+------------+------+---------------+-------------+------+---------+------------+------+-------+-------+----------------+

Löschen Sie die Tabelle wieder, aber ohne Fehlermeldung, wenn die Tabelle nicht existiert:

DROP TABLE IF EXISTS t2;

+------------------------------------------------------------+
| status                                                     |
|------------------------------------------------------------|
| Drop statement executed successfully (T2 already dropped). |
+------------------------------------------------------------+