Catégories :

Base de données, schéma et partage DDL

DROP DATABASE

Supprime une base de données du système.

Voir aussi :

CREATE DATABASE , SHOW DATABASES , UNDROP DATABASE

Syntaxe

DROP DATABASE [ IF EXISTS ] <name> [ CASCADE | RESTRICT ]

Paramètres

nom

Spécifie l’identificateur de la base de données à 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.

CASCADE | RESTRICT

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

  • CASCADE détruit la base de données et tous les objets dans la base de données, y compris les tables avec 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 base de données.

Par défaut : CASCADE

Notes sur l’utilisation

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

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

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

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

      • Une base de données transitoire n’est associée à aucune période Fail-safe, elle est donc purgée lorsqu’elle dépasse la période Time Travel.

    3. Une fois qu’une base de données 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 base de données, la création d’une base de données portant le même nom crée une nouvelle version de la base de données. La version détruite de l’ancienne base de données peut encore être restaurée à l’aide de la méthode suivante :

    1. Renommez la version actuelle de la base de données sous un nom différent.

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

  • Si une politique de masquage Sécurité au niveau des colonnes est associée à une colonne de table ou de vue, la destruction de la base de données nécessite que la politique de masquage soit autonome dans la base de données et le schéma. Par exemple, la base de données_1 contient la politique_1 et la politique_1 est uniquement utilisée dans la base de données_1.

Notes sur l’utilisation de la réplication de base de données

  • Vous pouvez détruire une base de données secondaire à tout moment. Seul le propriétaire de la base de données (c’est-à-dire le rôle doté du privilège OWNERSHIP sur la base de données) peut détruire la base de données.

  • Une base de données principale ne peut pas être supprimée s’il existe au moins un réplica de la base de données (c.-à-d. des bases de données secondaires). Pour détruire la base de données principale, commencez par promouvoir une base de données secondaire, afin qu’elle serve de base de données principale, puis détruisez l’ancienne base de données principale. Vous pouvez également détruire toutes les bases de données secondaires de la base de données principale, puis détruire la base de données principale.

    Notez que seul le propriétaire de la base de données peut détruire la base de données.

Exemples

DROP DATABASE mytestdb2;

+---------------------------------+
| status                          |
|---------------------------------|
| MYTESTDB2 successfully dropped. |
+---------------------------------+

SHOW DATABASES LIKE 'mytestdb2';

+------------+------+------------+------------+--------+-------+---------+---------+----------------+
| created_on | name | is_default | is_current | origin | owner | comment | options | retention_time |
|------------+------+------------+------------+--------+-------+---------+---------+----------------|
+------------+------+------------+------------+--------+-------+---------+---------+----------------+

SHOW DATABASES HISTORY LIKE 'mytestdb2';

+---------------------------------+-----------+------------+------------+--------+--------+---------+---------+----------------+---------------------------------+
| created_on                      | name      | is_default | is_current | origin | owner  | comment | options | retention_time | dropped_on                      |
|---------------------------------+-----------+------------+------------+--------+--------+---------+---------+----------------+---------------------------------|
| Wed, 25 Feb 2015 16:16:54 -0800 | MYTESTDB2 | N          | N          |        | PUBLIC |         |         |              1 | Fri, 13 May 2016 17:35:09 -0700 |
+---------------------------------+-----------+------------+------------+--------+--------+---------+---------+----------------+---------------------------------+