如何一次删除多个约束(Oracle,SQL)
问题描述:
我正在更改数据库中的约束,我需要删除其中的一些约束。我知道,对于一个约束,命令如下:如何一次删除多个约束(Oracle,SQL)
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,
};
答
当然可以。你只需要重复每个约束的“下降约束”。例如
alter table t1
drop constraint fk1
drop constraint fk2
/
编辑:我测试了这与Oracle 11,它工作正常。不知道旧版本。
答
还有另外一种形式的下降相关的列约束在一个表中,也与CASCADE删除列:
ALTER TABLE table1 DROP (columnName) CASCADE CONSTRAINTS;
据上的Oracle 11g
测试在你的附加例子中,你已经使用花括号而不是括号。 – climmunk 2012-05-25 19:15:47