Creating constraints

制約は、テーブル作成時に CREATE TABLE を使用して作成するか、 ALTER TABLE を使用して後からテーブルに追加できます。

  • 単一列制約は、列定義の一部としてインラインで作成できます。

  • Multi-column constraints must be created with a separate out-of-line clause that specifies the columns in the constraint.

制約を作成するには、制約の作成に使用されたロールに特定のアクセス制御権限を付与する必要があります。詳細については、 アクセス制御の要件 をご参照ください。

Creating constraints inline

次のインライン構文は、単一列制約にのみ使用できます。

CREATE [ OR REPLACE ] TABLE <name> (<column_name> <column_type> [ <inline_constraint> ] , ... )

ALTER TABLE <name> ADD COLUMN <column_name> <column_type> [ <inline_constraint> ]

inline_constraint 構文の詳細については、 CREATE | ALTER TABLE ... CONSTRAINT をご覧ください。

Creating constraints out-of-line

次のアウトライン構文は複数列制約で使用する必要がありますが、単一列制約にも使用できます。

CREATE [ OR REPLACE ] TABLE <name> ( ... , [ <outofline_constraint> ], ... )

ALTER TABLE <name> ADD <outofline_constraint>

outofline_constraint 構文の詳細については、 CREATE | ALTER TABLE ... CONSTRAINT をご覧ください。

CREATE TABLE での制約 ... LIKE および CLONE

Snowflakeは、 CREATE TABLE を使用したテーブルのコピーの作成をサポートしています。

  • 空のコピーを作成するには、 CREATE TABLE ... LIKE を使用します。

  • クローンを作成するには、 CREATE TABLE ... CLONE を使用します。

さらに、スキーマまたはデータベースがクローンされると、テーブルのコピーが自動的に作成されます。

テーブルのコピーが作成される方法にかかわらず、元のテーブルの制約もコピーされます。参照テーブル(外部キーテーブル)と被参照テーブル(主キーテーブル)で外部キーをコピーすると、次の状況が発生する場合があります。

  • 両方のテーブルが同じコマンドでコピーされた場合(スキーマまたはデータベースのクローンの作成中など)、新しい参照テーブルと被参照テーブルの間に新しい外部キーが作成されます。

  • 参照テーブルだけがコピーされた場合、参照テーブルに新しい外部キーが作成され、その外部キーは被参照テーブルとして元の主キーテーブルを指します。

  • If only the referenced table is copied, no new foreign keys are created, although the primary or unique keys are copied.

その結果、参照テーブルと被参照テーブルを別々にコピーする場合は、手動で新しい外部キーを作成するか、新しい外部キー用に主キーテーブルを手動で変更する必要があります。