弃用约束

使用 ALTER TABLE 命令弃用约束:

  • ALTER TABLE ...DROP CONSTRAINT ... 显式弃用指定的约束。与修改约束类似,可以通过约束名称或列定义以及约束类型来标识约束。对于主键,也可以使用 PRIMARY KEY 关键字来标识它们。

  • ALTER TABLE ...DROP COLUMN ... 弃用列及其关联的约束。

默认情况下,弃用主键/唯一键时,引用被弃用键的所有外键也将被弃用,除非指定了 RESTRICT 弃用选项。

弃用关联的表/架构/数据库时,也会弃用约束。DROP 命令支持 CASCADE | RESTRICT 弃用选项。

备注

可以使用 UNDROP 命令恢复弃用的表、架构和数据库;无法恢复弃用的列和约束。

本主题内容:

弃用约束

可以显式弃用唯一键/主键/外键约束(使用 ALTER TABLE ...DROP CONSTRAINT ...):

ALTER TABLE <table_name> DROP { CONSTRAINT <name> | PRIMARY KEY | { UNIQUE | FOREIGN KEY } (<column>, [ ... ] ) } [ CASCADE | RESTRICT ]
Copy

对于这些约束,弃用没有外键引用的外键约束或主键/唯一键约束时,将直接弃用约束。

默认弃用选项为 CASCADE,这意味着弃用具有外键引用的唯一键/主键会将所有引用外键与唯一键/主键一起弃用。

  • 如果指定了 RESTRICT 弃用选项,则在弃用主键/唯一键时,如果存在引用要弃用的键的外键,则会返回错误。

弃用列

使用 ALTER TABLE ...DROP COLUMN ... 弃用列的行为类似于弃用约束:

ALTER TABLE <table_name> DROP COLUMN <name> [ CASCADE | RESTRICT ]
Copy

默认弃用选项为 CASCADE,这意味着包含要弃用的列的任何约束也会被弃用。如果涉及该列的主键/唯一键被其他外键约束引用,则将弃用所有引用外键。

  • 如果指定了 RESTRICT 选项,并且该列的主键/唯一键引用了外键,则会返回错误。仅当约束未被定义或引用到要弃用的列时,弃用命令才会成功。

弃用表/架构/数据库

DROP 命令弃用指定的表、架构或数据库,也可以指定该命令以弃用与对象关联的所有约束:

DROP { TABLE | SCHEMA | DATABASE } <name> [ CASCADE | RESTRICT ]
Copy

与弃用列和约束类似,CASCADE 是默认的弃用选项,属于或引用被弃用对象的所有约束也将被弃用。

例如,弃用数据库时,如果数据库包含由另一个数据库的外键引用的主键/唯一键,则引用外键也会被弃用。

如果该对象稍后被取消弃用,则将恢复之前弃用的所有相关约束。

如果指定了 RESTRICT 选项,则如果对象下的任何主约束/唯一约束具有外键引用,将返回错误。

语言: 中文