Как удалить сразу несколько ограничений (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
);
Ответы
Ответ 1
Да, вы можете. Вам просто нужно повторить ограничение на ограничение на ограничение. например.
alter table t1
drop constraint fk1
drop constraint fk2
/
Изменить: я тестировал это против Oracle 11, и он работал нормально. Не знаете о более старых версиях.
Ответ 2
Существует альтернативная форма для ограничения ограничений, связанных с столбцом в таблице, также отбрасывая столбец с помощью CASCADE:
ALTER TABLE table1 DROP (columnName) CASCADE CONSTRAINTS;
Он тестируется на Oracle 11g