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 une table de lignes, sans supprimer la table, utilisez la commande DELETE ou TRUNCATE.

DROP TABLE supprime les contraintes qui existent sur la table cible. Plusieurs tables peuvent être supprimées avec une seule commande DROP TABLE.

Vous ne pouvez pas exécuter DROP TABLE avec une table externe à l’intérieur d’une transaction (BEGIN ... END). Pour plus d’informations sur les transactions, consultez Isolement sérialisable.

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

Privilèges requis

Les privilèges suivants sont requis pour DROP TABLE :

  • Superuser

  • Utilisateurs disposant du privilège DROP TABLE

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

Syntaxe

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

Paramètres

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

Comme cette clause est utile lors de l’écriture de scripts, le script n’échoue pas si DROP TABLE s’exécute sur une table qui n’existe pas.

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 des vues et des tables, incluez la clause WITH NO SCHEMA BINDING dans la définition de vue. Pour plus d'informations, consultez 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 pas de dépendances :

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

L’ensemble de commandes suivant crée une table FEEDBACK et une table BUYERS, 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 de l’option CASCADE.

Commencez par créer une simple table appelée FEEDBACK en utilisant la commande CREATE TABLE :

create table feedback(a int);

Puis, utilisez la commande CREATE VIEW pour créer une vue appelée FEEDBACK_VIEW reposant sur la table FEEDBACK :

create view feedback_view as select * from feedback;

L’exemple suivant supprime la table FEEDBACK, ainsi que la vue FEEDBACK_VIEW, car FEEDBACK_VIEW dépend de la table 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 et my_table par vos propres schéma et 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;

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

Suppression d’une table avec IF EXISTS

L’exemple suivant supprime la table FEEDBACK si elle existe, ou ne fait rien et renvoie un message dans le cas contraire :

drop table if exists feedback;