制約の変更¶
制約が作成されると、次を実行できます。
制約の名前を変更できます。
RELY など、一部のプロパティを変更できます。
DEFERRABLEなどの一部のプロパティは変更できません。これらのプロパティを変更するには、制約を削除して再度作成する必要があります。
新しい列の追加、既存列の削除、列の順序変更などの、制約の列定義は変更できません。これらのタイプの変更を行うには、制約を削除して再度作成する必要があります。
制約を変更するとき、制約名または制約定義の列と制約タイプのいずれかを使用して、制約を識別できます。各テーブルには1つの主キーしか持てないため、主キーはPRIMARY KEYキーワードを使用して識別することもできます。
テーブルの名前の変更や、テーブルを別のテーブルと交換するなど、制約のあるテーブルが変更された場合、変更が反映されて制約が更新されます。
このトピックの内容:
制約の名前の変更¶
ALTER TABLE コマンドに次の構文を使用して、制約の名前を変更します。
ALTER TABLE <table_name> RENAME CONSTRAINT <old_name> TO <new_name>;
制約のプロパティの変更¶
ALTER TABLE コマンドに次の構文を使用して、制約のプロパティを変更します。
ALTER TABLE <table_name>
{ ALTER | MODIFY } { CONSTRAINT <name> | PRIMARY KEY | { UNIQUE | FOREIGN KEY } (<column_name>, [ ... ] ) }
{ [ [ NOT ] ENFORCED ] [ VALIDATE | NOVALIDATE ] [ RELY | NORELY ] };
現在、Snowflakeは次の制約プロパティの設定のみをサポートしています。
NOT ENFORCED
NOVALIDATE
RELY
およびNORELY
Snowflakeは、 ENFORCED
と VALIDATE
の設定をサポートしていないことに注意してください。
制約プロパティの説明については、 制約のプロパティ をご覧ください。
制約のあるテーブルの変更¶
制約のあるテーブルの名前が変更されると、テーブルの制約とテーブルを参照する外部キー制約が更新され、新しい名前が参照されます。
同様に、テーブルが別の既存のテーブルと交換された場合、テーブルのすべての制約は交換されたテーブルで維持されます。
テーブルの名前の変更またはテーブルの交換の詳細については、 ALTER TABLE をご覧ください。