DROP TABLE - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

DROP TABLE

Entfernt eine Tabelle aus einer Datenbank.

Wenn Sie versuchen, eine Tabelle mit Zeilen zu leeren, ohne die Tabelle zu entfernen, verwenden Sie den TRUNCATE Befehl DELETE or.

DROPTABLEentfernt Einschränkungen, die in der Zieltabelle vorhanden sind. Mehrere Tabellen können mit einem einzigen DROP TABLE Befehl entfernt werden.

DROPTABLEmit einer externen Tabelle kann nicht innerhalb einer Transaktion ausgeführt werden (BEGIN...END). Weitere Informationen zu Transaktionen finden Sie unter Serialisierbare Isolierung.

Ein Beispiel, bei dem das DROP Privileg einer Gruppe gewährt wird, finden Sie unter GRANTBeispiele.

Erforderliche Berechtigungen

Im Folgenden sind die erforderlichen Rechte aufgeführt für DROPTABLE:

  • Superuser

  • Benutzer mit der DROP TABLE Berechtigung

  • Tabellenbesitzer mit der USAGE Berechtigung für das Schema

Syntax

DROP TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

Parameter

WENN EXISTS

Eine Klausel, die angibt, dass der Befehl keine Änderungen ausführen und die Meldung zurückgeben soll, dass die Tabelle nicht vorhanden ist, statt mit einem Fehler beendet zu werden, wenn die angegebene Tabelle nicht vorhanden ist.

Diese Klausel ist bei der Skripterstellung nützlich, damit das Skript nicht fehlschlägt, wenn es für eine Tabelle DROP TABLE ausgeführt wird, die nicht existiert.

Name

Der Name der Tabelle, die entfernt werden soll.

CASCADE

Eine Klausel, die angibt, dass Objekte, die von der Tabelle abhängig sind, automatisch entfernt werden sollen, beispielsweise Ansichten.

Um eine Ansicht zu erstellen, die nicht von anderen Datenbankobjekten wie Ansichten und Tabellen abhängig ist, nehmen Sie die WITH SCHEMA BINDING NO-Klausel in die Sichtdefinition auf. Weitere Informationen finden Sie unter CREATE VIEW.

RESTRICT

Eine Klausel, die angibt, dass eine Tabelle nicht entfernt werden soll, wenn von ihr Objekte abhängig sind. Diese Aktion ist die Standardeinstellung.

Beispiele

Entfernen einer Tabelle, von der keine Objekte abhängig sind

Im folgenden Beispiel wird eine Tabelle mit dem Namen erstellt und gelöschtFEEDBACK, die keine Abhängigkeiten hat:

create table feedback(a int); drop table feedback;

Wenn eine Tabelle Spalten enthält, auf die von Ansichten oder anderen Tabellen verwiesen wird, zeigt Amazon Redshift eine Meldung wie die folgende an.

Invalid operation: cannot drop table feedback because other objects depend on it

Gleichzeitiges Entfernen von zwei Tabellen

Der folgende Befehlssatz erstellt eine FEEDBACK Tabelle und eine BUYERS Tabelle und löscht dann beide Tabellen mit einem einzigen Befehl:

create table feedback(a int); create table buyers(a int); drop table feedback, buyers;

Entfernen einer Tabelle, von ein Objekt abhängig ist

Die folgenden Schritte zeigen, wie Sie eine FEEDBACK mit dem CASCADE Switch aufgerufene Tabelle löschen.

Erstellen Sie zunächst eine einfache Tabelle, die FEEDBACK mit dem CREATE TABLE folgenden Befehl aufgerufen wird:

create table feedback(a int);

Verwenden Sie als Nächstes den CREATE VIEW Befehl, um eine Ansicht namens FEEDBACK _ zu erstellenVIEW, die auf der Tabelle basiertFEEDBACK:

create view feedback_view as select * from feedback;

Im folgenden Beispiel wird die Tabelle FEEDBACK gelöscht und auch die Ansicht FEEDBACK _ gelöschtVIEW, da FEEDBACK _ von der Tabelle abhängig VIEW istFEEDBACK:

drop table feedback cascade;

Anzeigen der Abhängigkeiten für eine Tabelle

Verwenden Sie das folgende Beispiel, um die Abhängigkeiten für Ihre Tabelle zurückzugeben. Ersetzen my_schema and my_table mit Ihrem eigenen Schema und Ihrer eigenen Tabelle.

SELECT dependent_ns.nspname as dependent_schema , dependent_view.relname as dependent_view , source_ns.nspname as source_schema , source_table.relname as source_table , pg_attribute.attname as column_name FROM pg_depend JOIN pg_rewrite ON pg_depend.objid = pg_rewrite.oid JOIN pg_class as dependent_view ON pg_rewrite.ev_class = dependent_view.oid JOIN pg_class as source_table ON pg_depend.refobjid = source_table.oid JOIN pg_attribute ON pg_depend.refobjid = pg_attribute.attrelid AND pg_depend.refobjsubid = pg_attribute.attnum JOIN pg_namespace dependent_ns ON dependent_ns.oid = dependent_view.relnamespace JOIN pg_namespace source_ns ON source_ns.oid = source_table.relnamespace WHERE source_ns.nspname = 'my_schema' AND source_table.relname = 'my_table' AND pg_attribute.attnum > 0 ORDER BY 1,2 LIMIT 10;

Zum Ablegen my_table Verwenden Sie das folgende Beispiel und seine Abhängigkeiten. In diesem Beispiel werden auch alle Abhängigkeiten für die Tabelle zurückgegeben, die entfernt wurde.

DROP TABLE my_table CASCADE; SELECT dependent_ns.nspname as dependent_schema , dependent_view.relname as dependent_view , source_ns.nspname as source_schema , source_table.relname as source_table , pg_attribute.attname as column_name FROM pg_depend JOIN pg_rewrite ON pg_depend.objid = pg_rewrite.oid JOIN pg_class as dependent_view ON pg_rewrite.ev_class = dependent_view.oid JOIN pg_class as source_table ON pg_depend.refobjid = source_table.oid JOIN pg_attribute ON pg_depend.refobjid = pg_attribute.attrelid AND pg_depend.refobjsubid = pg_attribute.attnum JOIN pg_namespace dependent_ns ON dependent_ns.oid = dependent_view.relnamespace JOIN pg_namespace source_ns ON source_ns.oid = source_table.relnamespace WHERE source_ns.nspname = 'my_schema' AND source_table.relname = 'my_table' AND pg_attribute.attnum > 0 ORDER BY 1,2 LIMIT 10; +------------------+----------------+---------------+--------------+-------------+ | dependent_schema | dependent_view | source_schema | source_table | column_name | +------------------+----------------+---------------+--------------+-------------+

Löschen einer Tabelle mit IF EXISTS

Das folgende Beispiel löscht entweder die FEEDBACK Tabelle, falls sie existiert, oder tut nichts und gibt eine Meldung zurück, wenn sie nicht existiert:

drop table if exists feedback;