カテゴリ:

テーブル、ビュー、シーケンス DDL

ALTER ROW ACCESS POLICY

ポリシーの名前変更やポリシールールの置き換えなど、既存の行アクセスポリシーのプロパティを変更します。

ポリシールールに加えられた変更は、行アクセスポリシーを使用する次の SQL クエリが実行されるときに有効になります。

こちらもご参照ください。

テーブル、ビュー、シーケンス DDL

このトピックの内容:

構文

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>'

パラメーター

名前

行アクセスポリシーの識別子。ポリシーの親スキーマ内において一意である必要があります。

識別子の値はアルファベットで始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例: "My object")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。

詳細については、 識別子の要件 をご参照ください。

ON_VAL

データをフィルターする SQL 式。

式には、 条件式関数 を含めて条件付きロジック、組み込み関数を表すか、 UDFs を含めてデータを変換することができます。

行アクセスポリシー本体内で UDF または外部関数が使用されている場合、ポリシー所有者は UDF または外部関数に OWNERSHIP を持っている必要があります。行アクセスポリシーが適用されている列をクエリするユーザーは、 UDF または外部関数に USAGE を持っている必要はありません。

COMMENT = '文字列リテラル'

マスキングポリシーのコメントを追加するか、既存のコメントを上書きします。

デフォルト: 値なし

RENAME TO 新しい名前

行アクセスポリシーの新しい識別子を指定します。スキーマに対して一意である必要があります。識別子が別のポリシー(例: マスキングポリシー)にすでに配置されている場合、新しい識別子は使用できません。

詳細については、 識別子の要件 をご参照ください。

使用上の注意

  • 既存の行アクセスポリシーを更新するために、ポリシーの現在の定義を確認する必要がある場合は、 GET_DDL 関数を呼び出すか、 DESCRIBE ROW ACCESS POLICY コマンドを実行します。

  • ポリシーの署名(つまり、引数名または入出力データ型)を変更することはできません。同様に、ポリシーがテーブルまたはビューにアタッチされている場合、 CREATE OR REPLACE ROW ACCESS POLICY の使用はサポートされていません。署名を変更する必要がある場合は、ポリシーで DROP ROW ACCESS POLICY ステートメントを実行し、新しい行アクセスポリシーを作成します。

  • ALTER ステートメントを実行する前に、 DESCRIBE ROW ACCESS POLICY ステートメントを実行して、ポリシーの更新に使用する引数名を決定できます。

  • ポリシー本体に1つ以上の サブクエリ を含めると、エラーが発生する可能性があります。可能であれば、サブクエリの数を制限し、 JOIN 操作の数を制限し、 WHERE 句の条件を単純化します。

  • 行アクセスポリシーをマネージドアクセススキーマに(ALTER ROW ACCESSPOLICY ... RENAME TO 構文を使用して)移動することは、行アクセスポリシーの所有者(つまり、行アクセスポリシーの OWNERSHIP 権限を持つロール)がターゲットスキーマも所有している場合を 除き、禁止されています。

次の例では、行アクセスポリシーを更新します。

-- 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;