Catégories :

Table, vue et séquence DDL

ALTER ROW ACCESS POLICY

Modifie les propriétés d’une politique d’accès aux lignes existante, notamment en renommant la politique ou en remplaçant les règles de la politique.

Toutes les modifications apportées aux règles de politiques entrent en vigueur lors de l’exécution de la prochaine requête SQL qui utilise la politique d’accès aux lignes.

Voir aussi :

Table, vue et séquence DDL

Dans ce chapitre :

Syntaxe

ALTER ROW ACCESS POLICY [ IF EXISTS ] <name> SET BODY -> <expression_ON_VAL>

ALTER ROW ACCESS POLICY [ IF EXISTS ] <name> RENAME TO <new_name>

ALTER ROW ACCESS POLICY [ IF EXISTS ] <NAME> SET COMMENT = '<string_literal>'

Paramètres

nom

Identificateur de la politique d’accès aux lignes ; doit être unique dans le schéma parent de la politique.

La valeur de 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 (p. ex. "My object"). Les identificateurs entre guillemets doubles sont également sensibles à la casse.

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

expression_ON_VAL

Expression SQL qui filtre les données.

L’expression peut inclure Fonctions d’expressions conditionnelles pour représenter la logique conditionnelle, les fonctions intégrées ou les UDFs pour transformer les données.

Si une fonction UDF ou externe est utilisée dans le corps de la politique d’accès aux lignes, le propriétaire de la politique doit avoir OWNERSHIP sur l’UDF ou la fonction externe. Les utilisateurs interrogeant un objet de base de données auquel une politique d’accès aux lignes est appliquée n’ont pas besoin d’avoir USAGE sur l’UDF ou sur la fonction externe.

COMMENT = 'litéral_chaine'

Ajoute un commentaire ou écrase le commentaire existant pour la politique de masquage.

Par défaut : aucune valeur

RENAME TO nouveau_nom

Spécifie le nouvel identificateur de la politique d’accès aux lignes ; doit être unique pour votre schéma. Le nouvel identificateur ne peut pas être utilisé si l’identificateur est déjà en place pour une politique différente (par exemple, une politique de masquage).

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

Notes sur l’utilisation

  • Si vous souhaitez mettre à jour une politique d’accès aux lignes existante et si vous avez besoin de voir la définition actuelle de cette politique, appelez la fonction GET_DDL ou exécutez la commande DESCRIBE ROW ACCESS POLICY .

  • Vous ne pouvez pas modifier la signature de la politique (par exemple, le nom de l’argument ou le type de données d’entrée/de sortie). De même, l’utilisation de CREATE OR REPLACE ROW ACCESS POLICY n’est pas prise en charge si la politique est attachée à une table ou à une vue. Si vous devez modifier la signature, exécutez une instruction DROP ROW ACCESS POLICY sur la politique et créez une nouvelle politique d’accès aux lignes.

  • Avant d’exécuter une instruction ALTER, vous pouvez exécuter une instruction DESCRIBE ROW ACCESS POLICY pour déterminer le nom d’argument à utiliser pour mettre à jour la politique.

  • L’inclusion d’une ou plusieurs sous-requêtes dans le corps de la politique peut provoquer des erreurs. Dans la mesure du possible, limitez le nombre de sous-requêtes, limitez le nombre d’opérations JOIN et simplifiez les conditions des clauses WHERE.

  • Le déplacement d’une politique d’accès aux lignes vers un schéma d’accès géré (en utilisant la syntaxe ALTER ROWACCESS POLICY … RENAME TO) est interdit sauf si le propriétaire de la politique d’accès aux lignes (c’est-à-dire le rôle qui a le privilège OWNERSHIP sur la politique d’accès aux lignes) est également propriétaire du schéma cible.

Exemples

L’exemple suivant met à jour la politique d’accès aux lignes.

-- determine current definition

desc row access policy rap_table_employee_info;

+-------------------------+-------------+-------------+------+
| name                    | signature   | return_type | body |
+-------------------------+-------------+-------------+------+
| rap_table_employee_info | (V VARCHAR) | BOOLEAN     | true |
+-------------------------+-------------+-------------+------+

alter row access policy rap_table_employee_info set body -> false;