Подтвердить что ты не робот

Как удалить сразу несколько ограничений (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
);
4b9b3361

Ответ 1

Да, вы можете. Вам просто нужно повторить ограничение на ограничение на ограничение. например.

alter table t1
drop constraint fk1
drop constraint fk2
/

Изменить: я тестировал это против Oracle 11, и он работал нормально. Не знаете о более старых версиях.

Ответ 2

Существует альтернативная форма для ограничения ограничений, связанных с столбцом в таблице, также отбрасывая столбец с помощью CASCADE:

ALTER TABLE table1 DROP (columnName) CASCADE CONSTRAINTS;

Он тестируется на Oracle 11g