Синтаксис для удаления внешнего ключа:
ALTER TABLE table
DROP FOREIGN KEY fk_name
В вашем примере (который показывает, как создается ограничение внешнего ключа, OWNER_NAME
- это , а не имя внешнего ключа - это имя столбца в используемой таблице PETS). для ссылки на таблицу ВЛАДЕЛЕЦ.
Поскольку вы не указываете конкретное имя для ограничения в операторе CREATE TABLE, оно будет иметь сгенерированное системой имя, которое будет выглядеть примерно как SQL110213181225320.
Вы можете найти имя ограничения, посмотрев на SYSCAT.REFERENCES:
SELECT constname, fk_colnames
FROM syscat.references
WHERE tabschema = 'YOURSCHEMA'
AND tabname = 'PETS'
Затем вы можете удалить свой внешний ключ, используя соответствующее значение CONSTNAME из этого запроса:
ALTER TABLE домашние животные
ОТКЛЮЧИТЬ ИНОСТРАННЫЙ КЛЮЧ SQL110213181225320;
К вашему сведению, если вы хотите иметь более нормальное имя для ограничения внешнего ключа, вы можете определить его в операторе CREATE TABLE:
CREATE TABLE PETS
(
NAME VARCHAR(10) NOT NULL,
BIRTH_DATE DATE NOT NULL,
OWNER_NAME VARCHAR(10) NOT NULL,
PRIMARY KEY (NAME),
CONSTRAINT FK_OWNER
FOREIGN KEY (OWNER_NAME)
REFERENCES OWNER
ON DELETE CASCADE
);
Если вы сделаете это, то увидите, что запрос к SYSCAT.REFERENCES вернет 'FK_OWNER'.