カテゴリ:

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

ALTER VIEW

既存のビューのプロパティを変更します。現在サポートされている操作は次のとおりです。

  • ビューの名前の変更。

  • 安全なビューに変換(または元に戻す)。

  • ビューのコメントの追加、上書き、削除。

このコマンドを使用してビューの定義を変更することは できない ことに注意してください。ビュー定義を変更するには、ビューをドロップしてから再作成する必要があります。

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

CREATE VIEWDROP VIEWSHOW VIEWS

構文

ALTER VIEW [ IF EXISTS ] <name> RENAME TO <new_name>

ALTER VIEW [ IF EXISTS ] <name> SET { SECURE | COMMENT = '<string_literal>' }

ALTER VIEW [ IF EXISTS ] <name> UNSET { SECURE | COMMENT }

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 <name> ALTER | MODIFY <col_name> SET MASKING POLICY <policy_name>

ALTER VIEW <name> ALTER | MODIFY <col_name> UNSET MASKING POLICY

パラメーター

名前

変更するビューの識別子を指定します。識別子にスペースまたは特殊文字が含まれる場合、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。

RENAME TO 新しい名前

ビューの新しい識別子を指定します。スキーマに対して一意である必要があります。

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

オブジェクトの名前を変更すると、そのオブジェクトを参照する他のオブジェクトも新しい名前で更新する必要があります。

SET ...

ビューに設定するプロパティを指定します。

SECURE

ビューをセキュアとして指定します。

COMMENT = '文字列リテラル'

ビューのコメントを追加するか、既存のコメントを上書きします。

注釈

各レビュープロパティを個別に設定する必要があります。

UNSET ...

ビューの設定を解除するプロパティを指定し、デフォルトにリセットします。

  • SECURE

  • COMMENT

プロパティをリセットするときは、名前のみを指定します。プロパティの値を指定すると、エラーが返されます。

注釈

各レビュープロパティを個別にリセットする必要があります。

ポリシー名

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

ADD ROW ACCESS POLICY <ポリシー名> ON (<列名> [ , ... ])

ビューに行アクセスポリシーを追加します。

少なくとも1つの列名を指定する必要があります。追加の列は、各列名をコンマで区切って指定できます。

DROP ROW ACCESS POLICY <ポリシー名>

テーブルまたはビューから行アクセスポリシーをドロップします。

ALTER | MODIFY <col_name> SET MASKING POLICY <policy_name>

列レベルのセキュリティ マスキングポリシーをビュー列に適用します。

ALTER | MODIFY <col_name> UNSET MASKING POLICY

ビュー列から列レベルのセキュリティマスキングポリシーを削除します。

使用上の注意

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

  • 行アクセスポリシーの場合、

    • Snowflakeは、単一の SQL ステートメントで行アクセスポリシーの追加とドロップをサポートしています。

      たとえば、テーブルにすでに設定されている行アクセスポリシーを別のポリシーに置き換えるには、最初に行アクセスポリシーをドロップしてから、新しい行アクセスポリシーを追加します。

    • 特定のリソース(つまり、テーブルまたはビュー)の場合、行アクセスポリシーを ADD または DROP するには、スキーマに対する APPLY ROW ACCESS POLICY 権限、 または リソースに対する OWNERSHIP 権限と行アクセスポリシーリソースに対する APPLY 権限が必要です。

    • テーブルまたはビューは、一度に1つの行アクセスポリシーでのみ保護できます。ポリシー本体が、行アクセスポリシーによって保護されているテーブルまたはビューの列、またはマスキングポリシーによって保護されている列を参照している場合、ポリシーの追加は失敗します。

      同様に、マスキングポリシー本体が、行アクセスポリシーまたは別のマスキングポリシーによって保護されているテーブルを参照している場合、テーブル列へのマスキングポリシーの追加は失敗します。

    • 行アクセスポリシーは、システムビューまたはテーブル関数には適用できません。

    • 他の DROP <オブジェクト> 操作と同様に、行アクセスポリシーが追加されていないリソースから行アクセスポリシーをドロップしようとすると、Snowflakeはエラーを返します。

    • オブジェクトに行アクセスポリシーと1つ以上の 列レベルのセキュリティ マスキングポリシーの両方がある場合、行アクセスポリシーが最初に評価されます。

ビューの名前を 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);