如何一次删除多个约束(Oracle,SQL)

时间:2011-05-02 15:35:06

标签: sql database oracle constraints

我正在更改数据库中的约束,我需要删除其中一些约束。我知道对于单个约束,命令如下:

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,
};

2 个答案:

答案 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上测试