制約の変更

制約が作成されると、次を実行できます。

  • 制約の名前を変更できます。

  • RELY など、一部のプロパティを変更できます。

  • DEFERRABLEなどの一部のプロパティは変更できません。これらのプロパティを変更するには、制約を削除して再度作成する必要があります。

  • 新しい列の追加、既存列の削除、列の順序変更などの、制約の列定義は変更できません。これらのタイプの変更を行うには、制約を削除して再度作成する必要があります。

制約を変更するとき、制約名または制約定義の列と制約タイプのいずれかを使用して、制約を識別できます。各テーブルには1つの主キーしか持てないため、主キーはPRIMARY KEYキーワードを使用して識別することもできます。

テーブルの名前の変更や、テーブルを別のテーブルと交換するなど、制約のあるテーブルが変更された場合、変更が反映されて制約が更新されます。

このトピックの内容:

制約の名前の変更

ALTER TABLE コマンドに次の構文を使用して、制約の名前を変更します。

ALTER TABLE <table_name> RENAME CONSTRAINT <old_name> TO <new_name>;
Copy

制約のプロパティの変更

ALTER TABLE コマンドに次の構文を使用して、制約のプロパティを変更します。

ALTER TABLE <table_name>
    { ALTER | MODIFY } { CONSTRAINT <name> | PRIMARY KEY | { UNIQUE | FOREIGN KEY } (<column_name>, [ ... ] ) }
    { [ [ NOT ] ENFORCED ] [ VALIDATE | NOVALIDATE ] [ RELY | NORELY ] };
Copy

現在、Snowflakeは次の制約プロパティの設定のみをサポートしています。

  • NOT ENFORCED

  • NOVALIDATE

  • RELY および NORELY

Snowflakeは、 ENFORCEDVALIDATE の設定をサポートしていないことに注意してください。

制約プロパティの説明については、 制約のプロパティ をご覧ください。

制約のあるテーブルの変更

制約のあるテーブルの名前が変更されると、テーブルの制約とテーブルを参照する外部キー制約が更新され、新しい名前が参照されます。

同様に、テーブルが別の既存のテーブルと交換された場合、テーブルのすべての制約は交換されたテーブルで維持されます。

テーブルの名前の変更またはテーブルの交換の詳細については、 ALTER TABLE をご覧ください。