我正在更改数据库中的约束,我需要删除其中一些约束。我知道对于单个约束,命令如下:
ALTER TABLE tblApplication DROP CONSTRAINT constraint1_name;
然而,当我尝试
时ALTER TABLE tblApplication DROP (
CONSTRAINT constraint1_name,
CONSTRAINT constraint2_name
);
它不起作用,我需要这样做:
ALTER TABLE tblApplication DROP CONSTRAINT constraint1_name;
ALTER TABLE tblApplication DROP CONSTRAINT constraint2_name;
有没有办法在单个命令中删除多个约束?我想避免重复ALTER TABLE tblApplication
,就像使用ADD
命令一样:
ALTER TABLE tblApplication
ADD {
CONSTRAINT contraint1_name FOREIGN KEY ... ENABLE,
CONSTRAINT contraint2_name FOREIGN KEY ... ENABLE,
};
答案 0 :(得分:23)
是的,你可以。您只需要为每个约束重复'drop constraint'。 e.g。
alter table t1
drop constraint fk1
drop constraint fk2
/
编辑:我针对Oracle 11进行了测试,它运行良好。不知道旧版本。
答案 1 :(得分:1)
有一种替代形式可以删除与表中列相关的约束,同时使用CASCADE删除列:
ALTER TABLE table1 DROP (columnName) CASCADE CONSTRAINTS;
在Oracle 11g上测试