修改约束

在创建约束后:

  • 可以重命名约束。

  • 可以修改某些属性,例如 RELY。

  • 某些属性无法修改,例如 DEFERRABLE。若要修改这些属性,必须删除并重新创建约束。

  • 约束的列定义不能修改,例如添加新列、删除现有列或更改列的顺序。若要执行这些类型的更改,必须删除并重新创建约束。

修改约束时,可以使用约束名称或约束定义中的列及约束类型来标识约束。也可以使用 PRIMARY KEY 关键字来标识主键,因为每个表只能有一个主键。

如果修改了具有约束的表,例如重命名表或将表与另一个表交换,约束将会更新以反映更改。

本主题内容:

重命名约束

ALTER TABLE 命令使用以下语法来重命名约束:

ALTER TABLE <table_name> RENAME CONSTRAINT <old_name> TO <new_name>;
Copy

修改约束的属性

ALTER TABLE 命令使用以下语法来修改约束的属性:

ALTER TABLE <table_name>
    { ALTER | MODIFY } { CONSTRAINT <name> | PRIMARY KEY | { UNIQUE | FOREIGN KEY } (<column_name>, [ ... ] ) }
    { [ [ NOT ] ENFORCED ] [ VALIDATE | NOVALIDATE ] [ RELY | NORELY ] };
Copy

目前,Snowflake 仅支持设置以下约束属性:

  • NOT ENFORCED

  • NOVALIDATE

  • RELYNORELY

请注意,Snowflake 不支持设置 ENFORCEDVALIDATE

有关约束属性的说明,请参阅 约束属性

修改具有约束的表

如果为具有约束的表进行了重命名,则该表的约束以及引用该表的任何外键约束都会更新,以引用新名称。

同样,如果一个表与另一个现有表交换,则交换后的表会保留表的所有约束。

有关重命名或交换表的更多详细信息,请参阅 ALTER TABLE

语言: 中文