修改约束¶
在创建约束后:
可以重命名约束。
可以修改某些属性,例如 RELY。
某些属性无法修改,例如 DEFERRABLE。若要修改这些属性,必须删除并重新创建约束。
约束的列定义不能修改,例如添加新列、删除现有列或更改列的顺序。若要执行这些类型的更改,必须删除并重新创建约束。
修改约束时,可以使用约束名称或约束定义中的列及约束类型来标识约束。也可以使用 PRIMARY KEY 关键字来标识主键,因为每个表只能有一个主键。
如果修改了具有约束的表,例如重命名表或将表与另一个表交换,约束将会更新以反映更改。
本主题内容:
重命名约束¶
为 ALTER TABLE 命令使用以下语法来重命名约束:
ALTER TABLE <table_name> RENAME CONSTRAINT <old_name> TO <new_name>;
修改约束的属性¶
为 ALTER TABLE 命令使用以下语法来修改约束的属性:
ALTER TABLE <table_name>
{ ALTER | MODIFY } { CONSTRAINT <name> | PRIMARY KEY | { UNIQUE | FOREIGN KEY } (<column_name>, [ ... ] ) }
{ [ [ NOT ] ENFORCED ] [ VALIDATE | NOVALIDATE ] [ RELY | NORELY ] };
目前,Snowflake 仅支持设置以下约束属性:
NOT ENFORCED
NOVALIDATE
RELY
和NORELY
请注意,Snowflake 不支持设置 ENFORCED
和 VALIDATE
。
有关约束属性的说明,请参阅 约束属性。
修改具有约束的表¶
如果为具有约束的表进行了重命名,则该表的约束以及引用该表的任何外键约束都会更新,以引用新名称。
同样,如果一个表与另一个现有表交换,则交换后的表会保留表的所有约束。
有关重命名或交换表的更多详细信息,请参阅 ALTER TABLE。