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, ALTER TABLE, SHOW TABLES, TRUNCATE TABLE, DESCRIBE TABLE

Syntax

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

Parameter

name

Gibt den Bezeichner für die zu löschende Tabelle an. Wenn der Bezeichner Leerzeichen, Sonderzeichen oder Zeichen in Groß-/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ß-/Kleinschreibung zu beachten (z. B. "My Object").

Wenn der Tabellenbezeichner nicht vollqualifiziert ist (in der Form db_name.schema_name.table_name oder schema_name.table_name), 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 sie 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 durch die Datenaufbewahrungsfrist 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. Das Ändern der Time Travel-Aufbewahrungsfrist für das Konto oder für ein übergeordnetes Objekt (d. h. Datenbank oder Schema) nach dem Löschen einer Tabelle führt nicht dazu, dass die Time Travel-Aufbewahrungsfrist für die gelöschte Tabelle geändert wird. Weitere Informationen dazu finden Sie im entsprechenden Hinweis unter dem Time Travel-Thema.

    3. 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.

      Bemerkung

      Eine Time Travel-Abfrage mit langer Laufzeit verzögert das Verschieben der Daten und Objekte (Tabellen, Schemas und Datenbanken) im Konto in den Fail-safe-Bereich, bis die Abfrage abgeschlossen ist. Das Bereinigen von temporären und transienten Tabellen wird ebenfalls verzögert.

    4. 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 |
|------------+------+---------------+-------------+------+---------+------------+------+-------+-------+----------------|
+------------+------+---------------+-------------+------+---------+------------+------+-------+-------+----------------+
Copy

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). |
+------------------------------------------------------------+
Copy