Catégories :

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

ALTER SCHEMA

Modifie les propriétés d’un schéma existant, y compris le renommage du schéma ou son remplacement par un autre schéma et la modification de la période de conservation des données Time Travel (si vous utilisez Snowflake Enterprise Edition ou une version supérieure).

Voir aussi :

CREATE SCHEMA , SHOW SCHEMAS

Syntaxe

ALTER SCHEMA [ IF EXISTS ] <name> RENAME TO <new_schema_name>

ALTER SCHEMA [ IF EXISTS ] <name> SWAP WITH <target_schema_name>

ALTER SCHEMA [ IF EXISTS ] <name> SET {
                                      [ DATA_RETENTION_TIME_IN_DAYS = <num> ]
                                      [ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
                                      [ COMMENT = '<string_literal>' ]
                                      }

ALTER SCHEMA [ IF EXISTS ] <name> UNSET {
                                        DATA_RETENTION_TIME_IN_DAYS |
                                        DEFAULT_DDL_COLLATION       |
                                        COMMENT
                                        }
                                        [ , ... ]

ALTER SCHEMA [ IF EXISTS ] <name> { ENABLE | DISABLE } MANAGED ACCESS

Paramètres

nom

Indique l’identificateur du schéma à modifier. 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.

RENAME TO nom_nouveau_schéma

Spécifie le nouvel identifiant du schéma ; il doit être unique pour la base de données.

Pour plus de détails, voir Exigences relatives à l’identificateur.

Lorsqu’un objet est renommé, les autres objets qui le référencent doivent être mis à jour avec le nouveau nom.

SWAP WITH nom_schéma_cible

Permet d’échanger tous les objets (tables, vues, etc.) et métadonnées, y compris des identificateurs, entre deux schémas spécifiés. Échange également tous les privilèges de contrôle d’accès accordés aux schémas et aux objets qu’ils contiennent. SWAP WITH effectue essentiellement un renommage des deux schémas en une seule opération.

SET ...

Spécifie une (ou plusieurs) propriétés à définir pour le schéma (séparées par des espaces, des virgules ou de nouvelles lignes) :

DATA_RETENTION_TIME_IN_DAYS = nb

Spécifie le nombre de jours pendant lesquels des actions Time Travel (CLONE et UNDROP) peuvent être effectuées sur le schéma, ainsi que le temps de conservation Time Travel par défaut de toutes les tables créées dans le schéma.

La valeur que vous pouvez spécifier dépend de l’édition de Snowflake que vous utilisez :

  • Édition standard : 0 ou 1

  • Édition Enterprise (ou supérieure) : 0 à 90

DEFAULT_DDL_COLLATION = 'spécification_classement'

Définit une spécification de classement par défaut pour :

  • Toute nouvelle colonne ajoutée aux tables existantes dans le schéma.

  • Toutes les colonnes des nouvelles tables ajoutées au schéma.

La définition du paramètre ne modifie pas la spécification de classement des colonnes existantes.

Pour plus de détails sur le paramètre, voir DEFAULT_DDL_COLLATION.

COMMENT = 'litéral_chaine'

Ajoute un commentaire ou remplace un commentaire existant pour le schéma.

UNSET ...

Spécifie une (ou plusieurs) propriété(s) et/ou paramètres à désactiver pour la base de données, qui les réinitialise aux valeurs par défaut :

  • DATA_RETENTION_TIME_IN_DAYS

  • DEFAULT_DDL_COLLATION

  • COMMENT

Vous pouvez réinitialiser plusieurs propriétés/paramètres avec une seule instruction ALTER ; cependant, chaque propriété/paramètre doit être séparé(e) par une virgule. Lors de la réinitialisation d’une propriété ou d’un paramètre, spécifiez seulement le nom ; si vous spécifiez une valeur pour la propriété, vous obtiendrez une erreur.

ENABLE | DISABLE MANAGED ACCESS

Activez l’accès géré pour un schéma ou désactivez-le pour convertir un schéma d’accès géré en un schéma standard. Les schémas d’accès gérés centralisent la gestion des privilèges avec le propriétaire du schéma.

Dans les schémas classiques, le propriétaire d’un objet (c’est-à-dire le rôle disposant du privilège OWNERSHIP sur l’objet) peut octroyer des privilèges supplémentaires sur leurs objets à d’autres rôles. Dans les schémas à accès gérés, le propriétaire du schéma gère toutes les attributions de privilèges, y compris les autorisations futures, sur les objets du schéma. Les propriétaires d’objets conservent les privilèges OWNERSHIP sur les objets ; cependant, seul le propriétaire du schéma peut gérer les attributions de privilèges sur les objets.

Notes sur l’utilisation

  • Pour renommer un schéma, le rôle utilisé pour effectuer l’opération doit avoir le privilège CREATE SCHEMA sur la base de données pour le schéma et les privilèges OWNERSHIP sur le schéma.

  • Pour échanger deux schémas, le rôle utilisé pour effectuer l’opération doit avoir des privilèges OWNERSHIP sur les deux schémas.

  • Pour convertir un schéma standard en un schéma d’accès géré :

    • Le propriétaire du schéma (c’est-à-dire le rôle qui dispose des privilèges OWNERSHIP sur le schéma) doit également disposer du privilège global MANAGE GRANTS. Le privilège MANAGED GRANTS est requis, car un autre rôle avec ce privilège pourrait avoir défini des octrois futurs sur des objets d’un type spécifié dans le schéma. Une fois qu’un schéma normal est devenu un schéma d’accès géré, le propriétaire du schéma peut révoquer les futures autorisations sans comprendre pourquoi un rôle doté du privilège MANAGE GRANTS les a accordés.

    • Toutes les autorisations futures ouvertes doivent être révoquées en utilisant REVOKE <privileges> … FROM ROLE avec le mot clé FUTURE.

    Une fois qu’un schéma standard est converti en un schéma d’accès géré, tous les privilèges précédemment accordés sur des objets individuels sont conservés. Cependant, les propriétaires d’objets ne peuvent pas accorder d’autres privilèges sur ces objets.

  • Pour convertir un schéma d’accès géré en un schéma standard, le propriétaire du schéma doit également disposer du privilège global MANAGE GRANTS uniquement si le futur octroi de privilèges est défini.

Exemples

Renommer le schéma schema1 en schema2 :

ALTER SCHEMA IF EXISTS schema1 RENAME TO schema2;

Convertir un schéma standard en un schéma d’accès géré :

ALTER SCHEMA schema2 ENABLE MANAGED ACCESS;