Как удалить более одного ограничения одновременно (Oracle, SQL) - PullRequest
11 голосов
/ 02 мая 2011

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

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 ]

23 голосов
/ 02 мая 2011

Да, вы можете.Вам просто нужно повторить «отбрасывать ограничение» для каждого ограничения.например,

alter table t1
drop constraint fk1
drop constraint fk2
/

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

1 голос
/ 04 мая 2016

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

ALTER TABLE table1 DROP (columnName) CASCADE CONSTRAINTS;

Протестировано на Oracle 11g

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...