カテゴリ:

データベース、スキーマ、共有 DDL

ALTER SCHEMA

スキーマの名前変更や別のスキーマとの交換、Time Travelデータ保持期間の変更(Snowflake Enterprise Edition以降を使用している場合)など、既存のスキーマのプロパティを変更します。

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

CREATE SCHEMASHOW SCHEMAS

構文

ALTER SCHEMA [ IF EXISTS ] <name> RENAME TO <new_schema_name>

ALTER SCHEMA [ IF EXISTS ] <name> SWAP WITH <target_schema_name>

ALTER SCHEMA [ IF EXISTS ] <name> SET {
                                      [ DATA_RETENTION_TIME_IN_DAYS = <num> ]
                                      [ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
                                      [ COMMENT = '<string_literal>' ]
                                      }

ALTER SCHEMA [ IF EXISTS ] <name> UNSET {
                                        DATA_RETENTION_TIME_IN_DAYS |
                                        DEFAULT_DDL_COLLATION       |
                                        COMMENT
                                        }
                                        [ , ... ]

ALTER SCHEMA [ IF EXISTS ] <name> { ENABLE | DISABLE } MANAGED ACCESS

パラメーター

名前

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

RENAME TO 新しいスキーマ名

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

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

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

SWAP WITH ターゲットスキーマ名

指定した2つのスキーマ間で、すべてのオブジェクト(テーブル、ビューなど)および識別子を含むメタデータを交換します。また、含まれるスキーマとオブジェクトに付与されたすべてのアクセス制御権限をスワップします。 SWAP WITH は基本的に、両方のスキーマの名前変更を単一の操作として実行します。

SET ...

スキーマに設定する1つ(または複数)のプロパティを指定します(空白、カンマ、または改行で区切られます)。

DATA_RETENTION_TIME_IN_DAYS = 数値

スキーマでTime Travelアクション(CLONE および UNDROP)を実行できる日数を指定し、スキーマで作成されたすべてのテーブルのデフォルトのTime Travel保持時間を指定します。

指定できる値は、使用しているSnowflake Editionによって異なります。

  • Standard Edition: 0 または 1

  • Enterprise Edition(またはそれ以上): 0 から 90

DEFAULT_DDL_COLLATION = '照合仕様'

次のデフォルトの 照合仕様 を指定します。

  • スキーマ内の既存のテーブルに追加された新しい列。

  • スキーマに追加された新しいテーブルのすべての列。

パラメーターを設定しても、既存の列の照合仕様は 変更されません

パラメーターの詳細については、 DEFAULT_DDL_COLLATION をご参照ください。

COMMENT = '文字列リテラル'

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

UNSET ...

データベースの設定を解除する1つ(または複数)のプロパティおよび/またはパラメーターを指定します。これにより、デフォルトにリセットします。

  • DATA_RETENTION_TIME_IN_DAYS

  • DEFAULT_DDL_COLLATION

  • COMMENT

単一の ALTER ステートメントで複数のプロパティ/パラメーターをリセットできます。ただし、各プロパティ/パラメーターはカンマで区切る 必要があります 。プロパティ/パラメーターをリセットするときは、名前のみを指定します。プロパティの値を指定すると、エラーが返されます。

ENABLE | DISABLE MANAGED ACCESS

スキーマの管理アクセスを有効にするか、無効にして管理アクセススキーマを通常のスキーマに変換します。管理アクセススキーマは、スキーマの所有者とともに権限管理を集中化します。

通常のスキーマでは、オブジェクトの所有者(つまり、オブジェクトに対する OWNERSHIP 権限を持つロール)は、オブジェクトに対する追加の権限を他のロールに付与できます。管理アクセススキーマでは、スキーマの所有者は、スキーマ内のオブジェクトに対する 未来の付与 を含むすべての権限付与を管理します。オブジェクト所有者は、オブジェクトに対する OWNERSHIP 権限を保持します。ただし、オブジェクトの権限付与を管理できるのはスキーマ所有者のみです。

使用上の注意

  • スキーマの名前を変更するには、操作の実行に使用されるロールに、スキーマのデータベースに対する CREATE SCHEMA 権限と、スキーマに対する OWNERSHIP 権限が必要です。

  • 2つのスキーマを交換するには、操作の実行に使用されるロールに両方のスキーマの OWNERSHIP 権限が必要です。

  • 通常のスキーマを管理アクセススキーマに変換するには、

    • スキーマの所有者(つまり、スキーマに対する OWNERSHIP 権限を持つロール)には、グローバル MANAGE GRANTS 権限も必要です。MANAGED GRANTS 権限が必要なのは、この権限を持つ別のロールが、スキーマ内の指定されたタイプのオブジェクトに対する将来の付与を定義している可能性があるためです。通常のスキーマが管理アクセススキーマになった後、スキーマの所有者は、 MANAGE GRANTS 権限を持つロールが付与した理由を理解せずに、将来の付与を取り消すことができます。

    • FUTURE キーワードで REVOKE <権限> ... FROM ROLE を使用して、将来のすべての付与を取り消す必要があります。

    通常のスキーマが管理アクセススキーマに変換された後、個々のオブジェクトに対して以前に付与されたすべての権限が保持されます。ただし、オブジェクトの所有者は、それらのオブジェクトに対してそれ以上の権限を付与できません。

  • 管理アクセススキーマを通常のスキーマに変換するには、現在のスキーマに将来の権限付与が定義されている場合に のみ、スキーマ所有者にグローバル MANAGE GRANTS権限が必要です。

スキーマ schema1 の名前を schema2 に変更します。

ALTER SCHEMA IF EXISTS schema1 RENAME TO schema2;

通常のスキーマを管理アクセススキーマに変換します。

ALTER SCHEMA schema2 ENABLE MANAGED ACCESS;