Удаление ограничений

Удаление ограничений

Необходимо выполнять удаление ограничений в правильной последовательности, если ограничения PRIMARY KEY и CHECK имеют зависимости.

! ! !

СОВЕТ. Для поиска имен ограничений может оказаться полезным выполнение четырех системных просмотров, определенных в скрипте system_views.sql, представленном в приложении 9.

. ! .

Ограничения UNIQUE KEY и PRIMARY KEY

При удалении ограничений первичного и уникального ключа необходимо вначале найти и удалить все ссылающиеся на них ограничения внешних ключей. Если речь идет об уникальном ключе, то объявление внешнего ключа перечисляет имена столбцов уникального ключа, например:

. . .

FK_DATA_ID FOREIGN KEY DATA_ID

REFERENCES TEST_UQ (DATA_I D) ;

Если ключ, на который имеются ссылки, является первичным ключом, то имя столбца первичного ключа является необязательным в объявлениях внешнего ключа и часто опускается. Например, посмотрите на базу данных ../samples/employee.gdb:

...TABLE PROJECT (

. . . ,

TEAM_CONSTRT FOREIGN KEY(TEAM_LEADER)

REFERENCES EMPLOYEE );

Удаление ограничения внешнего ключа простое:

ALTER TABLE PROJECT

DROP CONSTRAINT TEAM_CONSTRT;

COMMIT;

После этого становится возможным удаление ограничения первичного ключа для столбца EMP_NO таблицы EMPLOYEE:

ALTER TABLE EMPLOYEE

DROP CONSTRAINT EMP_NO_CONSTRT ;

Ограничения CHECK

Любые условия CHECK, которые были добавлены в процессе определения таблицы, могут быть удалены без каких-либо осложнений. Условия CHECK, наследуемые от домена, являются более проблематичными. Для освобождения от ограничений домена необходимо выполнить операцию ALTER TABLE ALTER COLUMN ... TYPE для изменения типа данных столбца или указания другого домена.