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 à l'aide d'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;