- カテゴリ:
ALTER VIEW¶
既存のビューのプロパティを変更します。現在サポートされている操作は次のとおりです。
ビューの名前の変更。
セキュアビューに変換(または元に戻す)。
ビューのコメントの追加、上書き、削除。
このコマンドを使用してビューの定義を変更することは できない ことに注意してください。ビュー定義を変更するには、ビューをドロップしてから再作成する必要があります。
- こちらもご参照ください。
このトピックの内容:
構文¶
ALTER VIEW [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER VIEW [ IF EXISTS ] <name> SET COMMENT = '<string_literal>'
ALTER VIEW [ IF EXISTS ] <name> UNSET COMMENT
ALTER VIEW <name> SET SECURE
ALTER VIEW <name> UNSET SECURE
ALTER VIEW [ IF EXISTS ] <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER VIEW [ IF EXISTS ] <name> UNSET TAG <tag_name> [ , <tag_name> ... ]
ALTER VIEW [ IF EXISTS ] <name>
ADD ROW ACCESS POLICY <policy_name> ON (<col_name> [ , ... ])
ALTER VIEW [ IF EXISTS ] <name>
DROP ROW ACCESS POLICY <policy_name>
ALTER VIEW [ IF EXISTS ] <name>
ADD ROW ACCESS POLICY <policy_name> ON (<col_name> [ , ... ])
, DROP ROW ACCESS POLICY <policy_name>
ALTER VIEW [ IF EXISTS ] <name> DROP ALL ROW ACCESS POLICIES
ALTER VIEW <name> { ALTER | MODIFY } [ COLUMN ] <col_name> SET MASKING POLICY <policy_name> [ USING ( <col_name> , cond_col_1 , ... ) ]
ALTER VIEW <name> { ALTER | MODIFY } [ COLUMN ] <col_name> UNSET MASKING POLICY
ALTER VIEW <name> { ALTER | MODIFY } [ COLUMN ] <col_name> SET TAG <tag_name> = '<string_literal>' [ , <tag_name> = '<string_literal>' ... ]
ALTER VIEW <name> { ALTER | MODIFY } COLUMN <col_name> UNSET TAG <tag_name> [ , <tag_name> ... ]
パラメーター¶
名前
変更するビューの識別子を指定します。識別子にスペースまたは特殊文字が含まれる場合、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。
RENAME TO 新しい名前
ビューの新しい識別子を指定します。スキーマに対して一意である必要があります。
詳細については、 識別子の要件 をご参照ください。
オブジェクトの名前を変更すると、そのオブジェクトを参照する他のオブジェクトも新しい名前で更新する必要があります。
SET ...
ビューに設定するプロパティを指定します。
SECURE
ビューをセキュアとして指定します。
TAG タグ名 = 'タグ値' [ , タグ名 = 'タグ値' , ... ]
タグ 名(つまり、キー)とタグ値を指定します。
タグ値は常に文字列であり、タグ値の最大文字数は256です。オブジェクトに設定できる 一意の タグキーの最大数は20です。
注釈
テーブルまたはビューとその列の場合、設定できる一意のタグキーの総数は20です。
たとえば、テーブル内にある単一列の1列に10個の一意のタグキーが設定されている場合、Snowflakeでは、その列、テーブル内にある他の列、テーブル自体、またはテーブルとその列をいくつか組み合わせたものに10個の一意のタグキーを追加で設定できます。一意のタグキーが20の制限に達すると、テーブルまたはその列に追加のタグキーを設定できなくなります。
COMMENT = '文字列リテラル'
ビューのコメントを追加するか、既存のコメントを上書きします。
注釈
各ビュープロパティを個別に設定する必要があります。
UNSET ...
ビューの設定を解除するプロパティを指定し、デフォルトにリセットします。
SECURE
TAG TAG タグ名 = 'タグ値' [, TAG タグ名 = 'タグ値' ... ]
COMMENT
プロパティをリセットするときは、名前のみを指定します。プロパティの値を指定すると、エラーが返されます。
注釈
各ビュープロパティを個別にリセットする必要があります。
ポリシー名
アクセスポリシーの識別子。スキーマに対して一意である必要があります。
ADD ROW ACCESS POLICY <ポリシー名> ON (<列名> [ , ... ])
ビューに行アクセスポリシーを追加します。
少なくとも1つの列名を指定する必要があります。追加の列は、各列名をコンマで区切って指定できます。
DROP ROW ACCESS POLICY <ポリシー名>
ビューから行アクセスポリシーをドロップします。
DROP ALL ROW ACCESS POLICIES
ビューから すべての 行アクセスポリシーの関連付けをドロップします。
この式は、ビューからポリシーをドロップする 前に、スキーマから行アクセスポリシーをドロップするときに役立ちます。
ALTER | MODIFY <col_name> SET MASKING POLICY <policy_name>
列レベルのセキュリティ マスキングポリシーをビュー列に適用します。
USING ( 列名 , 条件付き列1 ... )
条件付きマスキングポリシー SQL 式に渡す引数を指定します。
リストの最初の列は、データをマスクまたはトークン化するポリシー条件の列を指定し、マスキングポリシーが設定されている列と一致する 必要 があります。
追加の列は、最初の列でクエリが実行されたときに、クエリ結果の各行のデータをマスクするかトークン化するかを決定するために評価する列を指定します。
USING 句が省略されている場合、Snowflakeは条件付きマスキングポリシーを通常の マスキングポリシー として扱います。
ALTER | MODIFY <col_name> UNSET MASKING POLICY
ビュー列から列レベルのセキュリティマスキングポリシーを削除します。
使用上の注意¶
ビューをマネージドアクセススキーマに(ALTER VIEW ... RENAME TO 構文を使用して)移動することは、ビューの所有者(つまり、ビューに対する OWNERSHIP 権限を持つロール)がターゲットスキーマも所有している場合を 除き、禁止されています。
ビューの列構造がポリシーで指定された列と一致する場合は、条件付き列を使用する単一のマスキングポリシーを複数のビューに適用できます。
マスキングポリシーを使用して1つ以上のビュー列を変更する場合、または行アクセスポリシーを使用してビュー自体を変更する場合は、 POLICY_CONTEXT 関数を使用して、マスキングポリシーによって保護されている列と、行アクセスポリシーによって保護されているビューに対するクエリをシミュレートします。
行アクセスポリシーの場合、
Snowflakeは、単一の SQL ステートメントで行アクセスポリシーの追加とドロップをサポートしています。
たとえば、テーブルにすでに設定されている行アクセスポリシーを別のポリシーに置き換えるには、最初に行アクセスポリシーをドロップしてから、新しい行アクセスポリシーを追加します。
特定のリソース(つまり、テーブルまたはビュー)の場合、行アクセスポリシーを
ADD
またはDROP
するには、スキーマに対する APPLY ROW ACCESS POLICY 権限、 または リソースに対する OWNERSHIP 権限と行アクセスポリシーリソースに対する APPLY 権限が必要です。テーブルまたはビューは、一度に1つの行アクセスポリシーでのみ保護できます。ポリシー本体が、行アクセスポリシーによって保護されているテーブルまたはビューの列、またはマスキングポリシーによって保護されている列を参照している場合、ポリシーの追加は失敗します。
同様に、マスキングポリシー本体が、行アクセスポリシーまたは別のマスキングポリシーによって保護されているテーブルを参照している場合、テーブル列へのマスキングポリシーの追加は失敗します。
行アクセスポリシーは、システムビューまたはテーブル関数には適用できません。
他の DROP <オブジェクト> 操作と同様に、行アクセスポリシーが追加されていないリソースから行アクセスポリシーをドロップしようとすると、Snowflakeはエラーを返します。
オブジェクトに行アクセスポリシーと1つ以上の 列レベルのセキュリティ マスキングポリシーの両方がある場合は、行アクセスポリシーが最初に評価されます。
メタデータについて。
注意
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
例¶
ビューの名前を view1
から view2
に変更する:
ALTER VIEW view1 RENAME TO view2;
ビューをセキュアビューに変換する。
ALTER VIEW view1 SET SECURE;
セキュアビューを通常のビューに戻します。
ALTER VIEW view1 UNSET SECURE;
列レベルのセキュリティマスキングポリシーをビュー列に適用します。
-- single column ALTER VIEW user_info_v MODIFY COLUMN ssn_number SET MASKING POLICY ssn_mask_v; -- multiple columns ALTER VIEW user_info_v MODIFY COLUMN ssn_number SET MASKING POLICY ssn_mask_v , COLUMN dob SET MASKING POLICY dob_mask_v ;
ビュー列から列レベルのセキュリティマスキングポリシーを設定解除します。
-- single column ALTER VIEW user_info_v modify column ssn_number unset masking policy; -- multiple columns ALTER VIEW user_info_v modify column ssn_number unset masking policy , column dob unset masking policy ;
次の例では、ビューに行アクセスポリシーを追加します。ポリシーを設定した後、 Information Schema を確認することで検証できます。
alter view v1 add row access policy rap_v1 on (empl_id);
次の例では、ビューから行アクセスポリシーをドロップします。 Information Schema にクエリを実行して、ポリシーがドロップされたことを検証します。
alter view v1 drop row access policy rap_v1;
次の例は、ビューの単一のSQLステートメントで行アクセスポリシーの追加とドロップを組み合わせる方法を示しています。 Information Schema を確認して結果を検証します。
alter view v1 drop row access policy rap_v1_version_1, add row access policy rap_v1_version_2 on (empl_id);