制約のプロパティ¶
制約のプロパティは、 CREATE TABLE または ALTER TABLE コマンドの CONSTRAINT 句で指定されます。
このトピックの内容:
ANSI SQL 制約のプロパティ¶
すべての制約のプロパティ¶
ANSI SQL 標準の次の制約プロパティは、すべての制約(一意、主キー、外部キー)に適用されます。
- ENFORCED | NOT ENFORCED
トランザクションで制約を強制するるかどうかを指定します。
NOT NULL
は 、Snowflakeによって強制される 唯一の 制約です。 参照整合性制約 をご参照ください。- DEFERRABLE | NOT DEFERRABLE
後続のトランザクションで、トランザクションの終了まで制約のチェックを延期できるかどうかを指定します。
- INITIALLY { DEFERRED | IMMEDIATE }
DEFERRABLE 制約の場合、次のトランザクションから制約のチェックを延期するかどうかを指定します。
標準の制約プロパティのデフォルトは次のとおりです。
NOT ENFORCED
DEFERRABLE
INITIALLY DEFERRED
外部キー制約のプロパティのみ¶
次の制約プロパティも ANSI SQL 標準のものですが、外部キーにのみ適用されます。
- MATCH { FULL | PARTIAL | SIMPLE }
1つ以上の列の NULL 値に関して、外部キーが満たされるかどうかを指定します。
- UPDATE { CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION }
外部キーの主/一意キーが更新されたときに実行されるアクションを指定します。
- DELETE { CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION }
外部キーの主/一意キーが削除されたときに実行されるアクションを指定します。
外部キー制約のプロパティのデフォルトは次のとおりです。
MATCH FULL
UPDATE NO ACTION
DELETE NO ACTION
拡張制約のプロパティ¶
次のプロパティは ANSI SQL 標準の一部ではありませんが、他のデータベースとの互換性のためにサポートされています。これらはすべての制約(一意キー、主キー、外部キー)に適用されます。
- ENABLE | DISABLE
制約を有効にするか無効にするかを指定します。これらのプロパティは、Oracleとの互換性のために提供されています。
- VALIDATE | NOVALIDATE
制約が作成されたときに、テーブル上の既存のデータを検証するかどうかを指定します。ENABLE | DISABLE プロパティと組み合わせてのみ使用されます。
- RELY | NORELY
クエリの書き換え中に NOVALIDATE モードの制約を考慮するかどうかを指定します。
拡張制約のプロパティのデフォルトは次のとおりです。
DISABLE
NOVALIDATE
RELY
制約プロパティのデフォルト以外の値¶
他の構文と互換性を保つために、Snowflakeは制約プロパティの非デフォルト値の指定をサポートしています。ただし、制約の作成中にデフォルト以外の値が指定された場合、 制約は作成されません。
Snowflakeには、制約の作成中にデフォルト以外の値を指定するとエラーが発生するかどうかを指定するセッションパラメーター UNSUPPORTED_DDL_ACTION が用意されています。