2011-05-02 2 views
9

데이터베이스에서 제약 조건을 변경하려고합니다. 일부 제약 조건을 삭제해야합니다. 내가한 번에 둘 이상의 제약 조건을 삭제하는 방법 (Oracle, SQL)

ALTER TABLE tblApplication DROP (
    CONSTRAINT constraint1_name, 
    CONSTRAINT constraint2_name 
); 

가 작동하지 않을 때, 그러나

ALTER TABLE tblApplication DROP CONSTRAINT constraint1_name; 

을 내가 수행해야합니다 : 나는 하나의 제약 조건, 명령은 다음과 같은 것을 알고

ALTER TABLE tblApplication DROP CONSTRAINT constraint1_name; 
ALTER TABLE tblApplication DROP CONSTRAINT constraint2_name; 

단일 명령에서 둘 이상의 제한 조건을 제거하는 방법이 있습니까? 난 그냥 ADD 명령처럼, ALTER TABLE tblApplication를 반복하지 않도록하고 싶습니다 :

ALTER TABLE tblApplication 
    ADD { 
    CONSTRAINT contraint1_name FOREIGN KEY ... ENABLE, 
    CONSTRAINT contraint2_name FOREIGN KEY ... ENABLE, 
}; 
+0

에서 테스트 당신이 사용하고는 괄호 대신 중괄호를 사용합니다. – climmunk

답변

20

예하실 수 있습니다. 제약 조건에 따라 '드롭 제약 조건'을 반복하면됩니다. 예 :

alter table t1 
drop constraint fk1 
drop constraint fk2 
/

편집 : Oracle 11에 대해 테스트 한 결과 정상적으로 작동했습니다. 이전 버전에 대해 모르겠다.

+0

10g에서도 사용할 수 있습니다. – DCookie

+0

공정하게 말하자면, ALTER TABLE에 대한 오라클 문서는 읽기가 매우 어렵습니다. 여러 개의 드롭 절이 허용된다는 한 문장을 찾으려면 잠시 시간이 필요했습니다. 구문 도표는 전혀 명확하지 않으며, 허용하지 않는 경우를 만들 수 있습니다. – DCookie

+0

고마워, 그게 내가 원하는거야. –

0

또한 CASCADE로 열을 떨어 뜨리고, 테이블의 열 관련 제약을 떨어 뜨리는 또 다른 형태가있다 :

ALTER TABLE table1 DROP (columnName) CASCADE CONSTRAINTS; 

그것은 당신의 추가 예에서 오라클 11g

관련 문제