DROP ROLE¶
Supprime le rôle spécifié du système.
- Voir aussi :
Syntaxe¶
DROP ROLE [ IF EXISTS ] <name>
Paramètres¶
name
Spécifie l’identificateur du rôle à détruire. Si l’identificateur contient des espaces ou des caractères spéciaux, toute la chaîne doit être délimitée par des guillemets doubles. Les identificateurs entre guillemets doubles sont également sensibles à la casse.
Notes sur l’utilisation¶
Les rôles détruits ne peuvent être récupérés ; ils doivent être recréés.
Le rôle principal actuel ne peut pas être supprimé. Une tentative de suppression de ce rôle renvoie une erreur. Par exemple :
CREATE ROLE bobr_primary; GRANT ROLE bobr_primary to USER bobr; USE ROLE bobr_primary; DROP ROLE bobr_primary;
SQL execution error: Cannot drop role BOBR_PRIMARY as it is the current primary role.
Pour plus d’informations, voir Rôles actifs et Autorisation par le biais d’un rôle primaire et de rôles secondaires.
Un rôle ne peut pas être supprimé s’il dispose du privilège OWNERSHIP sur une base de données partagée. Utilisez la commande GRANT OWNERSHIP pour transférer d’abord le privilège OWNERSHIP sur la base de données partagée, puis supprimez le rôle.
La propriété des objets appartenant au rôle détruit est transférée au rôle qui exécute la commande DROP ROLE. Pour transférer la propriété de chacun de ces objets à un rôle différent, utilisez GRANT OWNERSHIP … COPY CURRENT GRANTS.
Si un rôle dispose d’un futur privilège en tant que concédant ou bénéficiaire, ce rôle ne peut être détruit que par un utilisateur disposant d’un rôle disposant du privilège MANAGE GRANTS.
Toutes les autorisations actuelles et futures qui désignent le rôle comme étant celui du concédant ou du bénéficiaire sont révoquées lorsque le rôle est supprimé.
Interrogez la vue Account Usage GRANTS_TO_ROLES pour récupérer les attributions de privilèges qui désignent un rôle spécifié en tant que concédant ou bénéficiaire :
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.GRANTS_TO_ROLES WHERE grantee_name = UPPER('<role_name>') OR granted_by = UPPER('<role_name>');
L’exemple suivant récupère les attributions où
myrole
est le concédant ou le bénéficiaire :SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.GRANTS_TO_ROLES WHERE grantee_name = UPPER('myrole') OR granted_by = UPPER('myrole');
Si un rôle est un concédant de rôles aux utilisateurs, la destruction du rôle révoque automatiquement ces autorisations.
La révocation des autorisations se produit lorsque la commande DROP ROLE s’exécute. S’il y a des milliers ou des millions d’autorisations à révoquer, la commande DROP ROLE peut expirer. Il est possible d’exécuter à nouveau la commande en toute sécurité pour poursuivre l’exécution là où l’invocation précédente s’est arrêtée.
Lorsque la clause
IF EXISTS
est spécifiée et que l’objet cible n’existe pas, la commande se termine correctement sans renvoyer d’erreur.
Exemples¶
DROP ROLE myrole;