source

한 번에 둘 이상의 제약 조건을 삭제하는 방법(Oracle, SQL)

bestscript 2023. 8. 8. 23:38

한 번에 둘 이상의 제약 조건을 삭제하는 방법(Oracle, SQL)

데이터베이스의 제약 조건을 변경하는 중인데 일부 제약 조건을 삭제해야 합니다.단일 제약 조건에 대한 명령은 다음과 같습니다.

ALTER TABLE tblApplication DROP CONSTRAINT constraint1_name;

하지만, 내가 노력할 때

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

작동하지 않아요. 해야 할 일이 있어요.

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

단일 명령에서 두 개 이상의 제약 조건을 제거하는 방법이 있습니까?반복되는 것을 피하고 싶습니다.ALTER TABLE tblApplication와 마찬가지로ADD명령:

ALTER TABLE tblApplication ADD (
  CONSTRAINT contraint1_name FOREIGN KEY ... ENABLE,
  CONSTRAINT contraint2_name FOREIGN KEY ... ENABLE,
  CONSTRAINT contraint3_name FOREIGN KEY ... ENABLE
);

네, 가능합니다.제약 조건별로 'drop 제약 조건'을 반복하면 됩니다.

alter table t1
drop constraint fk1
drop constraint fk2
/

편집: Oracle 11과 비교하여 테스트한 결과 정상적으로 작동했습니다.이전 버전에 대해 알지 못합니다.

테이블의 열과 관련된 제약 조건을 삭제하고 CASCADE를 사용하여 열을 삭제할 수 있는 대체 양식이 있습니다.

ALTER TABLE table1 DROP (columnName) CASCADE CONSTRAINTS;

Oracle 11g에서 테스트되었습니다.

예: 이렇게 변수에 대한 제약 조건을 만들어 MySQL에 제약 조건을 삭제할 수 있습니다.

create table sample(id int, name varchar(30), marks int, constraint uid unique(id), constraint un unique(name));
alter table sample drop constraint uid, drop constraint un;

예, 여러 개를 동시에 삭제할 수 있습니다.

ALTER TABLE TABLE NAME
DROP CONSTRAINTS CONSTRAINT VALUE
DROP CONSTRAINTS CONSTRAINT VALUE;

언급URL : https://stackoverflow.com/questions/5859106/how-to-drop-more-than-one-constraint-at-once-oracle-sql