ALTER SCHEMA¶
スキーマの名前変更や別のスキーマとの交換、Time Travelデータ保持期間の変更(Snowflake Enterprise Edition以降を使用している場合)など、既存のスキーマのプロパティを変更します。
- こちらもご参照ください。
CREATE SCHEMA、 DESCRIBE SCHEMA、 DROP SCHEMA、 SHOW SCHEMAS、 UNDROP SCHEMA
構文¶
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 = <integer> ]
[ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
[ EXTERNAL_VOLUME = <external_volume_name> ]
[ CATALOG = <catalog_integration_name> ]
[ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
[ LOG_LEVEL = '<log_level>' ]
[ TRACE_LEVEL = '<trace_level>' ]
[ COMMENT = '<string_literal>' ]
}
ALTER SCHEMA [ IF EXISTS ] <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER SCHEMA [ IF EXISTS ] <name> UNSET TAG <tag_name> [ , <tag_name> ... ]
ALTER SCHEMA [ IF EXISTS ] <name> UNSET {
DATA_RETENTION_TIME_IN_DAYS |
MAX_DATA_EXTENSION_TIME_IN_DAYS |
EXTERNAL_VOLUME |
CATALOG |
DEFAULT_DDL_COLLATION |
LOG_LEVEL |
TRACE_LEVEL |
COMMENT
}
[ , ... ]
ALTER SCHEMA [ IF EXISTS ] <name> { ENABLE | DISABLE } MANAGED ACCESS
パラメーター¶
name
変更するスキーマの識別子を指定します。識別子にスペース、特殊文字、または大文字と小文字が混在する場合、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。
RENAME TO new_schema_name
スキーマの新しい識別子を指定します。データベースに対して一意である必要があります。
詳細については、 識別子の要件 をご参照ください。
オプションでスキーマの名前を変更して、オブジェクトを別のデータベースに移動できます。これを実行するには、新しいデータベース名を
db_name.new_schema_name
の形式で含む、修飾されたnew_schema_name
値を指定します。注釈
宛先データベースはすでに存在している必要があります。また、同じ名前のスキーマが新しい場所にすでに存在することはできません。存在する場合、ステートメントはエラーを返します。
オブジェクトの名前を変更すると、そのオブジェクトを参照する他のオブジェクトも新しい名前で更新する必要があります。
SWAP WITH target_schema_name
指定した2つのスキーマ間で、すべてのオブジェクト(テーブル、ビューなど)および識別子を含むメタデータを交換します。また、含まれるスキーマとオブジェクトに付与されたすべてのアクセス制御権限をスワップします。
SWAP WITH
は基本的に、両方のスキーマの名前変更を単一の操作として実行します。SET ...
スキーマに設定する1つ(または複数)のプロパティを指定します(空白、コンマ、または改行で区切り)。
DATA_RETENTION_TIME_IN_DAYS = integer
スキーマでTime Travelアクション(CLONE および UNDROP)を実行できる日数を指定し、スキーマで作成されたすべてのテーブルのデフォルトのTime Travel保持時間を指定します。
指定できる値は、使用しているSnowflake Editionによって異なります。
Standard Edition:
0
または1
Enterprise Edition(またはそれ以上):
0
から90
MAX_DATA_EXTENSION_TIME_IN_DAYS = integer
Snowflakeがスキーマ内のテーブルのデータ保持期間を延長して、テーブル上のストリームが古くなるのを防ぐことができる最大日数を指定するオブジェクトパラメーター。
このパラメーターの詳細については、 MAX_DATA_EXTENSION_TIME_IN_DAYS をご参照ください。
EXTERNAL_VOLUME = external_volume_name
Icebergテーブル に使用するデフォルト外部ボリュームを指定するオブジェクトパラメーター。
このパラメーターの詳細については、 EXTERNAL_VOLUME をご参照ください。
CATALOG = catalog_integration_name
Icebergテーブル に使用するデフォルトのカタログ統合を指定するオブジェクトパラメーター。
このパラメーターの詳細については、 CATALOG をご参照ください。
DEFAULT_DDL_COLLATION = 'collation_specification'
次のデフォルトの 照合順序仕様 を指定します。
スキーマ内の既存のテーブルに追加された新しい列。
スキーマに追加された新しいテーブルのすべての列。
パラメーターを設定しても、既存の列の照合順序仕様は 変更されません 。
パラメーターの詳細については、 DEFAULT_DDL_COLLATION をご参照ください。
LOG_LEVEL = 'log_level'
インジェストされ、アクティブなイベントテーブルで使用できるようにするメッセージの重大度レベルを指定します。指定されたレベル(およびそれよりも重大なレベル)のメッセージがインジェストされます。
レベルの詳細については、 LOG_LEVEL をご参照ください。ログレベルの設定については、 ログレベルの設定 をご参照ください。
TRACE_LEVEL = 'trace_level'
トレースイベントがイベントテーブルにインジェストされる方法を制御します。
レベルの詳細については、 TRACE_LEVEL をご参照ください。トレースレベルの設定については、 トレースレベルの設定 をご参照ください。
TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]
タグ の名前とタグ文字列の値を指定します。
タグ値は常に文字列であり、タグ値の最大文字数は256です。
ステートメントでのタグの指定に関する情報については、 オブジェクトおよび列のタグクォータ をご参照ください。
COMMENT = 'string_literal'
スキーマのコメントを追加するか、既存のコメントを上書きします。
UNSET ...
データベースの設定を解除する1つ(または複数)のプロパティおよび/またはパラメーターを指定します。これにより、デフォルトにリセットします。
DATA_RETENTION_TIME_IN_DAYS
MAX_DATA_EXTENSION_TIME_IN_DAYS
EXTERNAL_VOLUME
CATALOG
DEFAULT_DDL_COLLATION
TAG tag_name [ , tag_name ... ]
COMMENT
単一の ALTER ステートメントで複数のプロパティ/パラメーターをリセットできます。ただし、各プロパティ/パラメーターはカンマで区切る 必要があります 。プロパティ/パラメーターをリセットするときは、名前のみを指定します。プロパティの値を指定すると、エラーが返されます。
ENABLE | DISABLE MANAGED ACCESS
スキーマの管理アクセスを有効にするか、無効にして管理アクセススキーマを通常のスキーマに変換します。管理アクセススキーマは、スキーマの所有者とともに権限管理を集中化します。
通常のスキーマでは、オブジェクトの所有者(つまり、オブジェクトに対する OWNERSHIP 権限を持つロール)は、オブジェクトに対する追加の権限を他のロールに付与できます。管理アクセススキーマでは、スキーマの所有者は、スキーマ内のオブジェクトに対する 未来の付与 を含むすべての権限付与を管理します。オブジェクト所有者は、オブジェクトに対する OWNERSHIP 権限を保持します。ただし、オブジェクトの権限付与を管理できるのはスキーマ所有者のみです。
使用上の注意¶
スキーマの名前を変更するには、操作の実行に使用されるロールに、スキーマのデータベースに対する CREATE SCHEMA 権限と、スキーマに対する OWNERSHIP 権限が必要です。
2つのスキーマを交換するには、操作の実行に使用されるロールに両方のスキーマの OWNERSHIP 権限が必要です。
通常のスキーマを管理アクセススキーマに変換するには、
スキーマの所有者(つまり、スキーマに対する OWNERSHIP 権限を持つロール)には、グローバル MANAGE GRANTS 権限も必要です。MANAGE GRANTS 権限が必要なのは、この権限を持つ別のロールが、スキーマ内の指定されたタイプのオブジェクトに対する将来の付与を定義している可能性があるためです。通常のスキーマが管理アクセススキーマになった後、スキーマの所有者は、 MANAGE GRANTS 権限を持つロールが付与した理由を理解せずに、将来の付与を取り消すことができます。
FUTURE キーワードで REVOKE <権限> を使用して、将来のすべての付与を取り消す必要があります。
通常のスキーマが管理アクセススキーマに変換された後、個々のオブジェクトに対して以前に付与されたすべての権限が保持されます。ただし、オブジェクトの所有者は、それらのオブジェクトに対してそれ以上の権限を付与できません。
管理アクセススキーマを通常のスキーマに変換するには、現在のスキーマに将来の権限付与が定義されている場合に 限り、スキーマ所有者に MANAGE GRANTS グローバル権限が必要です。
メタデータについて。
注意
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
例¶
スキーマ schema1
の名前を schema2
に変更します。
ALTER SCHEMA IF EXISTS schema1 RENAME TO schema2;
通常のスキーマを管理アクセススキーマに変換します。
ALTER SCHEMA schema2 ENABLE MANAGED ACCESS;