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> SET CHANGE_TRACKING = { TRUE | FALSE }
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>
DROP ROW ACCESS POLICY <policy_name>
, ADD ROW ACCESS POLICY <policy_name> ON (<col_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 , ... ) ]
[ FORCE ]
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> ... ]
パラメーター¶
name
変更するビューの識別子を指定します。識別子にスペースまたは特殊文字が含まれる場合、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。
RENAME TO new_name
ビューの新しい識別子を指定します。スキーマに対して一意である必要があります。
詳細については、 識別子の要件 をご参照ください。
オプションでオブジェクトの名前を変更して、オブジェクトを別のデータベースやスキーマに移動できます。これを実行するには、新しいデータベース名やスキーマ名をそれぞれ
db_name.schema_name.object_name
またはschema_name.object_name
の形式で含む、修飾されたnew_name
値を指定します。注釈
宛先データベースやスキーマはすでに存在している必要があります。また、同じ名前のオブジェクトが宛先データベースにすでに存在することはできません。存在する場合、ステートメントはエラーを返します。
オブジェクトをマネージドアクセススキーマに移動することは、オブジェクトの所有者(つまり、オブジェクトに対して OWNERSHIP 権限を持つロール)がターゲットスキーマも所有している場合を 除き 禁止されています。
オブジェクトの名前を変更すると、そのオブジェクトを参照する他のオブジェクトも新しい名前で更新する必要があります。
SET ...
ビューに設定するプロパティを指定します。
SECURE
ビューをセキュアとして指定します。
CHANGE_TRACKING = TRUE | FALSE
テーブルの変更追跡を有効または無効にするように指定します。
TRUE
は、ビューで変更の追跡を有効にし、その設定を基になるすべてのテーブルにカスケードします。FALSE
は、ビューの変更追跡を無効にし、その設定をすべての基になるテーブルにカスケードします。
TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]
タグ の名前とタグ文字列の値を指定します。
タグ値は常に文字列であり、タグ値の最大文字数は256です。
ステートメントにあるタグの指定の詳細については、 オブジェクトおよび列のタグクォータ をご参照ください。
COMMENT = 'string_literal'
ビューのコメントを追加するか、既存のコメントを上書きします。
注釈
各ビュープロパティを個別に設定する必要があります。
UNSET ...
ビューの設定を解除するプロパティを指定し、デフォルトにリセットします。
SECURE
TAG TAG tag_name = 'tag_value' [, TAG tag_name = 'tag_value' ... ]
COMMENT
プロパティをリセットするときは、名前のみを指定します。プロパティの値を指定すると、エラーが返されます。
注釈
各ビュープロパティを個別にリセットする必要があります。
policy_name
アクセスポリシーの識別子。スキーマに対して一意である必要があります。
ADD ROW ACCESS POLICY <policy_name> ON (<col_name> [ , ... ])
ビューに行アクセスポリシーを追加します。
少なくとも1つの列名を指定する必要があります。追加の列は、各列名をコンマで区切って指定できます。
DROP ROW ACCESS POLICY <policy_name>
ビューから行アクセスポリシーをドロップします。
DROP ALL ROW ACCESS POLICIES
ビューから すべての 行アクセスポリシーの関連付けをドロップします。
この式は、ビューからポリシーをドロップする 前に、スキーマから行アクセスポリシーをドロップするときに役立ちます。
ALTER | MODIFY <col_name> SET MASKING POLICY <policy_name>
マスキングポリシー をビュー列に適用します。
USING ( col_name , cond_col_1 ... )
条件付きマスキングポリシー SQL 式に渡す引数を指定します。
リストの最初の列は、データをマスクまたはトークン化するポリシー条件の列を指定し、マスキングポリシーが設定されている列と一致する 必要 があります。
追加の列は、最初の列でクエリが実行されたときに、クエリ結果の各行のデータをマスクするかトークン化するかを決定するために評価する列を指定します。
USING 句が省略されている場合、Snowflakeは条件付きマスキングポリシーを通常の マスキングポリシー として扱います。
FORCE
単一のステートメント内で、列に現在設定されているマスキングポリシーを別のマスキングポリシーに置き換えます。
FORCE
キーワードを使用するには、 ALTER VIEW ステートメント(つまり STRING)内のポリシーの データ型 が、列に現在設定されているマスキングポリシーのデータ型(つまり STRING)と一致している必要があります。現在列にマスキングポリシーが設定されていない場合は、このキーワードを指定しても効果はありません。
詳細については、 列のマスキングポリシーを置き換える をご参照ください。
ALTER | MODIFY <col_name> UNSET MASKING POLICY
ビュー列から列レベルのセキュリティマスキングポリシーを削除します。
使用上の注意¶
ビューをマネージドアクセススキーマに(ALTER VIEW ... RENAME TO 構文を使用して)移動することは、ビューの所有者(つまり、ビューに対する OWNERSHIP 権限を持つロール)がターゲットスキーマも所有している場合を 除き、禁止されています。
マスキングポリシーの場合、
USING
句とFORCE
キーワードはどちらもオプションです。どちらも、列にマスキングポリシーを設定する必要はありません。USING
句とFORCE
キーワードは、個別にまたは一緒に使用できます。詳細については、以下をご参照ください。テーブルの列構造がポリシーで指定された列と一致する場合は、条件付き列を使用する単一のマスキングポリシーを複数のテーブルに適用できます。
マスキングポリシーを使用して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);