修改约束¶
创建约束后,可以通过以下方式对其进行修改:
可以重命名约束。
可以修改某些属性;例如,RELY。
无法修改某些属性;例如,DEFERRABLE。若要修改这些属性,必须删除并重新创建约束。
约束的列定义不能修改,例如添加新列、删除现有列或更改列的顺序。若要执行这些类型的更改,必须删除并重新创建约束。
修改约束时,可以使用约束名称或约束定义中的列及约束类型来标识约束。也可以使用 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。