DROP TABLE - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

DROP TABLE

Supprime une table d’une base de données.

Si vous essayez de vider un tableau de lignes sans le supprimer, utilisez la TRUNCATE commande DELETE ou.

DROPTABLEsupprime les contraintes qui existent sur la table cible. Plusieurs tables peuvent être supprimées à l'aide d'une seule DROP TABLE commande.

DROPTABLEavec une table externe ne peut pas être exécuté dans une transaction (BEGIN...END). Pour plus d’informations sur les transactions, consultez Isolement sérialisable.

Pour trouver un exemple dans lequel le DROP privilège est accordé à un groupe, consultez GRANTExemples.

Privilèges requis

Les privilèges suivants sont requis pour DROP TABLE :

  • Superuser

  • Utilisateurs ayant le DROP TABLE privilège

  • Propriétaire de la table disposant du USAGE privilège sur le schéma

Syntaxe

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

Paramètres

SI EXISTS

Clause indiquant que si la table spécifiée n’existe pas, la commande ne doit faire aucune modification et renvoyer un message selon lequel la table n’existe pas, plutôt que de mettre fin avec une erreur.

Cette clause est utile lors de la création de scripts, afin que le script n'échoue pas s'il est DROP TABLE exécuté sur une table inexistante.

nom

Nom de la table à supprimer.

CASCADE

Clause qui indique de supprimer automatiquement les objets qui dépendent de la table, tels que les vues.

Pour créer une vue qui ne dépend pas d'autres objets de base de données, tels que les vues et les tables, incluez la SCHEMA BINDING clause WITH NO dans la définition de la vue. Pour de plus amples informations, veuillez consulter CREATE VIEW.

RESTRICT

Clause qui indique de ne pas pour supprimer la table si des objets en dépendent. Il s’agit de l’action par défaut.

Exemples

Suppression d’une table sans dépendances

L'exemple suivant crée et supprime une table appelée FEEDBACK qui n'a aucune dépendance :

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

Si une table contient des colonnes qui sont référencées par des vues ou par d’autres tables, Amazon Redshift affiche un message tel que le suivant.

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

Suppression simultanée de deux tables

Le jeu de commandes suivant crée une FEEDBACK table et une BUYERS table, puis supprime les deux tables avec une seule commande :

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

Suppression d’une table avec une dépendance

Les étapes suivantes montrent comment supprimer une table appelée à FEEDBACK l'aide du CASCADE commutateur.

Tout d'abord, créez une table simple appelée FEEDBACK à l'aide de la CREATE TABLE commande :

create table feedback(a int);

Ensuite, utilisez la CREATE VIEW commande pour créer une vue nommée FEEDBACK _ VIEW qui repose sur la table FEEDBACK :

create view feedback_view as select * from feedback;

L'exemple suivant supprime le tableau FEEDBACK et supprime également la vue FEEDBACK _VIEW, VIEW car FEEDBACK _ dépend du tableau FEEDBACK :

drop table feedback cascade;

Affichage des dépendances pour une table

Pour renvoyer les dépendances de votre table, utilisez l’exemple suivant. Remplacez my_schema and my_table avec votre propre schéma et votre propre table.

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;

À déposer my_table et ses dépendances, utilisez l'exemple suivant. Cet exemple renvoie également toutes les dépendances de la table supprimée.

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 | +------------------+----------------+---------------+--------------+-------------+

Supprimer une table en utilisant IF EXISTS

L'exemple suivant supprime le FEEDBACK tableau s'il existe ou ne fait rien et renvoie un message s'il n'existe pas :

drop table if exists feedback;