Мне нужно изменить существующий внешний ключ с «при ограничении удаления» на «при каскадном удалении». К сожалению, эта ошибка проскользнула через Q/A.
В моей базе данных у меня есть несколько отношений внешнего ключа, которые были автоматически названы (INTEG_1, INTEG_2, ...). Имя ограничения, которое я должен исправить, отличается в новой установке от версии 2 и даже от версии 2, которая ранее была обновлена с версии 1.
Поскольку таблица ссылок имеет только один внешний ключ, этот оператор дает мне имя ограничения:
SELECT RDB$CONSTRAINT_NAME
FROM RDB$RELATION_CONSTRAINTS
where RDB$CONSTRAINT_TYPE = 'FOREIGN KEY'
and RDB$RELATION_NAME = 'MY_TABLE_NAME'
затем я могу сбросить, а затем воссоздать внешний ключ (на этот раз с «настоящим» именем)
alter table MY_TABLE_NAME
drop constraint <result from above>;
alter table MY_TABLE_NAME
add constraint fk_my_table_name_purpose foreign key (other_id)
references other_table(id) on delete cascade;
Однако я стараюсь не работать напрямую с системными таблицами, и мне хотелось бы знать, есть ли лучший/более элегантный способ изменить мой внешний ключ.
INFORMATION_SCHEMA
) - person a_horse_with_no_name   schedule 11.11.2014