DROP TABLE

Supprime une table du schéma actuel/spécifié, mais conserve une version de la table afin qu’elle puisse être récupérée en utilisant UNDROP TABLE. Pour plus de détails, voir Notes sur l’utilisation (dans ce chapitre).

Voir aussi :

CREATE TABLE , ALTER TABLE , SHOW TABLES , TRUNCATE TABLE , DESCRIBE TABLE

Syntaxe

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

Paramètres

name

Indique l’identificateur de la table à détruire. Si l’identificateur contient des espaces, des caractères spéciaux ou des caractères majuscules et minuscules, toute la chaîne doit être délimitée par des guillemets doubles. Les identificateurs entre guillemets doubles sont également sensibles à la casse (p. ex. "My Object").

Si l’identificateur de la table n’est pas complet (sous la forme db_name.schema_name.table_name ou schema_name.table_name), la commande recherche la table dans le schéma actuel de la session.

CASCADE | RESTRICT

Indique si la table peut être détruite s’il existe des clés étrangères qui font référence à la table :

  • CASCADE détruit la table même si celle-ci présente des clés primaires/uniques qui sont référencées par des clés étrangères dans d’autres tables.

  • RESTRICT renvoie un avertissement sur les références de clés étrangères existantes et ne détruit pas la table.

Par défaut : CASCADE

Notes sur l’utilisation

  • La destruction d’une table ne la supprime pas définitivement du système. Une version de la table détruite est conservée dans Time Travel pendant le nombre de jours spécifié par la période de conservation des données de la table :

    1. Pendant la période de conservation de Time Travel, une table détruite peut être restaurée à l’aide de la commande UNDROP TABLE.

    2. La modification de la période de conservation Time Travel pour le compte ou pour un objet parent (c’est-à-dire une base de données ou un schéma) après la suppression d’une table ne modifie pas la période de conservation Time Travel pour la table supprimée. Pour plus d’informations, consultez la remarque dans la rubrique sur Time Travel.

    3. Lorsque la période de conservation de Time Travel prend fin, l’état suivant de la table détruite dépend de son caractère : permanente, temporaire ou transitoire :

      • Une table permanente se déplace dans Fail-safe. Dans Fail-safe (7 jours), une table détruite peut être récupérée, mais seulement par Snowflake. Lorsque la table quitte Fail-safe, elle est purgée.

      • Une table transitoire ou temporaire n’est associée à aucune période Fail-safe, elle est donc purgée lorsqu’elle dépasse la période Time Travel.

      Note

      Une requête Time Travel de longue durée retardera le déplacement des données et des objets (tables, schémas et bases de données) du compte vers Fail-safe, jusqu’à ce que la requête soit terminée. La purge des tables temporaires et transitoires sera également retardée.

    4. Une fois qu’une table détruite a été purgée, elle ne peut pas être récupérée ; elle doit être recréée.

  • Après la destruction d’une table, la création d’une table portant le même nom crée une nouvelle version de la table. La version détruite de la table précédente peut encore être restaurée en utilisant la méthode suivante :

    1. Renommez la version actuelle de la table sous un nom différent.

    2. Utilisez la commande UNDROP TABLE pour restaurer la version précédente.

  • Avant de détruire une table, vérifiez qu”aucune vue ne lui fait référence. La destruction d’une table référencée par une vue rend non valide la vue (comme interroger la vue renvoie une erreur de type « l’objet n’existe pas »).

  • Pour détruire une table, vous devez utiliser un rôle disposant du privilège de propriété sur la table.

Exemples

Détruire une table :

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

Détruire à nouveau la table, mais ne pas engendrer d’erreur si la table n’existe pas :

DROP TABLE IF EXISTS t2;

+------------------------------------------------------------+
| status                                                     |
|------------------------------------------------------------|
| Drop statement executed successfully (T2 already dropped). |
+------------------------------------------------------------+
Copy