制約の変更¶
制約が作成されたら、次の方法で変更できます。
制約の名前を変更できます。
RELYなど、一部のプロパティを変更できます。
DEFERRABLEなど、一部のプロパティは変更できません。これらのプロパティを変更するには、制約を削除して再度作成する必要があります。
新しい列の追加、既存列の削除、列の順序変更などの、制約の列定義は変更できません。これらのタイプの変更を行うには、制約を削除して再度作成する必要があります。
制約を変更するとき、制約名または制約定義の列と制約タイプのいずれかを使用して、制約を識別します。各テーブルには1つのPRIMARY KEYしか持てないため、主キーはPRIMARY KEYキーワードを使用して識別することもできます。
テーブルの名前の変更や、テーブルを別のテーブルと交換するなどにより制約のあるテーブルが変更された場合、変更が反映されて制約が更新されます。
制約の名前の変更¶
ALTER TABLE コマンドに次の構文を使用して、制約の名前を変更します。
制約のプロパティの変更¶
ALTER TABLE コマンドに次の構文を使用して、制約のプロパティを変更します。
CHECK制約の場合、 constraint_name は必須です。また、CHECK制約に関連付けられた expr は変更できません。expr を変更するには、CHECK制約を削除して再度作成する必要があります。
現在、Snowflakeは次の制約プロパティの設定のみをサポートしています。
[ NOT ] ENFORCED
NOVALIDATE および VALIDATE
RELY および NORELY
SnowflakeはENFORCEDの設定をサポートしていません。 Snowflakeは、CHECK制約に対してNOVALIDATEの設定のみをサポートしています。 ENABLE と VALIDATE プロパティのデフォルト以外の値 もご参照ください。
制約プロパティの説明については、 制約のプロパティ をご覧ください。
制約のあるテーブルの変更¶
制約のあるテーブルの名前が変更されると、テーブルの制約とテーブルを参照するFOREIGN KEY制約が更新され、新しい名前が参照されます。
同様に、テーブルが別のテーブル、既存のテーブルと交換された場合、テーブルのすべての制約は交換されたテーブルで維持されます。
テーブルの名前の変更またはテーブルの交換の詳細については、 ALTER TABLE をご覧ください。