创建约束

可以使用 CREATE TABLE 在创建表时创建约束,也可以稍后使用 ALTER TABLE 将约束添加到表中:

  • 单列约束可以作为列定义的一部分以内联方式创建。

  • 必须在指定约束中的列的单独(即行外)子句中创建多列约束。

若要创建约束,必须对用于创建约束的角色授予某些访问控制权限。有关更多信息,请参阅 访问控制要求

创建内联约束

以下内联语法只能用于单列约束:

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

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

有关 inline_constraint 语法的详细信息,请参阅 CREATE | ALTER TABLE ...CONSTRAINT

创建行外约束

以下行外语法必须用于多列约束,但也可用于单列约束:

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

ALTER TABLE <name> ADD <outofline_constraint>
Copy

有关 outofline_constraint 语法的详细信息,请参阅 CREATE | ALTER TABLE ...CONSTRAINT

CREATETABLE...LIKE 和 CLONE 中的限制

Snowflake 支持使用 CREATE TABLE 创建表的副本:

  • 要创建空副本,请使用 CREATE TABLE ...LIKE。

  • 要创建克隆,请使用 CREATE TABLE ...CLONE。

此外,克隆架构或数据库时会自动创建表的副本。

无论以何种方式为表创建副本,都会复制原始表上的约束。使用引用表(外键表)和被引用表(主键表)复制外键时,可能会出现以下情况:

  • 如果在同一命令中复制两个表(例如在克隆架构或数据库期间),则会在新的引用表和被引用表之间创建一个新的外键。

  • 如果仅复制引用表,则会在引用表上创建一个新的外键,该外键指向作为引用表的原始主键表。

  • 如果仅复制被引用表,则不会创建新的外键,尽管会复制主键/唯一键。

因此,如果您分别复制引用表和被引用表,则必须手动创建新的外键,或手动更改新外键的主键表。

语言: 中文