弃用约束¶
使用以下 ALTER TABLE 命令弃用约束:
ALTER TABLE ... DROP CONSTRAINT 显式弃用指定的约束。与修改约束类似,可以通过约束名称或列定义以及约束类型来标识约束。对于主键,也可以使用 PRIMARY KEY 关键字来标识该约束。
ALTER TABLE ...DROP COLUMN 弃用列及其关联的约束。
默认情况下,弃用主键或唯一键时,引用被弃用键的所有外键也将被弃用,除非指定了 RESTRICT 弃用选项。
弃用关联的表、架构或数据库时,也会弃用约束。DROP 命令支持 CASCADE | RESTRICT 弃用选项。
备注
可以使用 UNDROP 命令恢复弃用的表、架构和数据库;无法恢复弃用的列和约束。
弃用约束¶
您可以使用 ALTER TABLE ... DROP CONSTRAINT 命令,显式弃用 UNIQUE、PRIMARY KEY、FOREIGN KEY 和 CHECK 约束:
对于这些约束,弃用没有外键引用的 FOREIGN KEY 约束或主键或唯一键约束时,将直接弃用约束。
默认弃用选项为 CASCADE,这意味着弃用具有外键引用的唯一键或主键会将所有引用外键与唯一键或主键一起弃用。
如果指定了 RESTRICT 弃用选项,则在弃用主键或唯一键时,如果存在引用要弃用的键的外键,则会返回错误。
弃用列¶
使用 ALTER TABLE ...DROPCOLUMN 行为类似于弃用约束:
对于 PRIMARY KEY、UNIQUE 和 FOREIGN KEY 约束,默认弃用选项为 CASCADE,这意味着包含要弃用的列的任何约束也会被弃用。如果涉及该列的主键或唯一键被其他 FOREIGN KEY 约束引用,则删除所有引用外键。如果指定 RESTRICT 选项,如果列具有带外键引用的主键或唯一键,则返回错误。仅当约束未被定义或引用到要弃用的列时,弃用命令才会成功。
对于引用单个列的 CHECK 约束,默认弃用选项为 CASCADE。但是,对于引用多列的 CHECK 约束,默认弃用选项为 RESTRICT,这可以防止意外删除可能用于数据完整性所必需的约束。
弃用表、架构和数据库¶
DROP 命令弃用指定的表、架构或数据库,也可以指定该命令以弃用与对象关联的所有约束:
与弃用列和约束类似,CASCADE 是默认的弃用选项,属于或引用被弃用对象的所有约束也会被弃用。
例如,弃用数据库时,如果数据库包含由另一个数据库的外键引用的主键或唯一键,则引用外键也会被弃用。
如果该对象稍后被取消弃用,则会恢复之前弃用的所有相关约束。
如果指定了 RESTRICT 选项,则如果对象下的任何 PRIMARY KEY 或 UNIQUE 约束具有外键引用,将返回错误。