制約のプロパティ

制約のプロパティは、 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 が用意されています。