CREATE JOIN POLICY¶
Crée une nouvelle politique de jointure dans le schéma actuel/spécifié ou remplace une politique de jointure existante.
Après avoir créé une politique de jointure, affectez-la à une table à l’aide d’une commande ALTER TABLE ou à une vue à l’aide d’une commande ALTER VIEW. Vous pouvez également affecter une politique de jointure à une table lors de sa création.
- Voir aussi :
Syntaxe¶
CREATE [ OR REPLACE ] JOIN POLICY [ IF NOT EXISTS ] <name>
AS () RETURNS JOIN_CONSTRAINT -> <body>
[ COMMENT = '<string_literal>' ]
Paramètres¶
name
Identificateur de la politique de jointure ; doit être unique pour votre schéma.
De plus, l’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que toute la chaîne d’identificateur soit délimitée par des guillemets doubles (par exemple,
"My object"
). Les identificateurs entre guillemets doubles sont également sensibles à la casse.Pour plus d’informations, voir Exigences relatives à l’identificateur.
AS () RETURNS JOIN_CONSTRAINT
Signature et type de retour de la politique. La signature n’accepte aucun argument et le type de retour est JOIN_CONSTRAINT, qui est un type de données interne. Toutes les politiques de jointure ont la même signature et le même type de retour.
body
Expression SQL qui détermine les restrictions d’une politique de jointure.
Pour définir le corps de la politique de jointure, appelez la fonction JOIN_CONSTRAINT, qui renvoie TRUE ou FALSE. Lorsque la fonction renvoie TRUE, les requêtes doivent utiliser une jointure pour renvoyer les résultats.
La syntaxe de la fonction JOIN_CONSTRAINT est la suivante :
JOIN_CONSTRAINT ( { JOIN_REQUIRED => <boolean_expression> } )
Où :
JOIN_REQUIRED => boolean_expression
Indique si une jointure est exigée dans les requêtes lorsque les données sont sélectionnées dans des tables ou des vues auxquelles la politique de jointure a été attribuée.
Le corps d’une politique ne peut pas faire référence à des fonctions, des tables ou des vues définies par l’utilisateur.
Les colonnes de jointure autorisées sont spécifiées dans l’instruction CREATE ou ALTER pour la table ou la vue à laquelle la politique est appliquée, et non dans l’instruction CREATE JOIN POLICY.
COMMENT = 'string_literal'
Ajoute un commentaire ou remplace un commentaire existant pour la politique de jointure.
Exigences en matière de contrôle d’accès¶
Un rôle utilisé pour exécuter cette opération doit au minimum disposer des privilèges suivants :
Privilège |
Objet |
Remarques |
---|---|---|
CREATE JOIN POLICY |
Schéma |
Le privilège USAGE relatif à la base de données et au schéma parents est exigé pour effectuer des opérations sur tout objet d’un schéma.
Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.
Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.
Pour plus d’informations sur la DDL de politique de jointure et les privilèges, voir Gérer les politiques de jointure.
Notes sur l’utilisation¶
Si vous souhaitez mettre à jour une politique de jointure existante et que vous avez besoin de voir le corps actuel de la politique, exécutez la commande DESCRIBE JOIN POLICY ou la fonction GET_DDL.
Concernant les métadonnées :
Attention
Les clients doivent s’assurer qu’aucune donnée personnelle (autre que pour un objet utilisateur), donnée sensible, donnée à exportation contrôlée ou autre donnée réglementée n’est saisie comme métadonnée lors de l’utilisation du service Snowflake. Pour plus d’informations, voir Champs de métadonnées dans Snowflake.
Exemples¶
Créer une politique de jointure qui exige que les requêtes incluent une jointure (lorsque la politique est appliquée aux tables et aux vues qui apparaissent dans ces requêtes) :
CREATE JOIN POLICY jp1 AS () RETURNS JOIN_CONSTRAINT -> JOIN_CONSTRAINT(JOIN_REQUIRED => TRUE);
Créer une politique de jointure qui permet à un utilisateur ayant le rôle ACCOUNTADMIN d’exécuter des requêtes sans jointure ; les autres utilisateurs doivent exécuter des requêtes avec jointure :
CREATE JOIN POLICY jp2 AS () RETURNS JOIN_CONSTRAINT -> CASE WHEN CURRENT_ROLE() = 'ACCOUNTADMIN' THEN JOIN_CONSTRAINT(JOIN_REQUIRED => FALSE) ELSE JOIN_CONSTRAINT(JOIN_REQUIRED => TRUE) END;