Страница 1 из 1

Удаление внешнего ключа

Добавлено: 19 апр 2007, 07:28
ess
Hello!


При попытке удаления FK у таблицы вываливается исключение (FB 2.0.1.12855):

/*******************************************************************************
The next statement causes the following error:

This operation is not defined for system tables.
unsuccessful metadata update.
cannot delete.
INDEX FK_ORG_OBJECT_TP.
there are 7 dependencies.
*******************************************************************************/
ALTER TABLE ORG_OBJECT DROP CONSTRAINT FK_ORG_OBJECT_TP;

Подскажите, как можно отследить эти 7 зависимостей ?

Добавлено: 19 апр 2007, 08:32
mdfv
Легче взять IBExpert и посмотреть там зависимости.
Чуть труднее самому написать запрос из системных таблиц.

Добавлено: 19 апр 2007, 10:15
ess
Да, но IBExpert не показывает зависимости FK

Добавлено: 19 апр 2007, 10:21
WildSery
Становишься в зависимостях на таблицу и смотришь таблицы, зависящие от неё. В тех, которых ссылки на поле с твоим FK - оно и есть.

Добавлено: 19 апр 2007, 10:27
ess
Нашел.
FK не удалялся из-за того, что не мог удалиться индекс, используемый в собственных планах запросов.

Тогда вопрос: как можно удалить FK не удаляя индекс (если это вообще возможно)?

Добавлено: 19 апр 2007, 11:57
CyberMax
Индекс внешнего ключа нельзя удалить, так как необходим внешнему ключу. Дропай FK. А при необходимости создашь для этого столбца просто индекс.

Добавлено: 19 апр 2007, 12:43
ess
CyberMax писал(а):Индекс внешнего ключа нельзя удалить, так как необходим внешнему ключу. Дропай FK. А при необходимости создашь для этого столбца просто индекс.
индекс как раз мне и надо оставить, а вот FK удалить!

Добавлено: 19 апр 2007, 12:53
ess
Поясню:
я делаю скрипт, который в последствии должен отработать на рабочей базе, и индекс, созданный по FK, будет in use. Индекс прописан в планах (в SP).

Добавлено: 19 апр 2007, 13:13
hvlad
Шо тут непонятного ? Пересоздавай свои СП также

Добавлено: 19 апр 2007, 13:16
ess
hvlad писал(а):Шо тут непонятного ? Пересоздавай свои СП также
с SP проблем нет, пересоздам.

Но на рабоче базе будут трудности с удалением индекса, он постоянно in use.

Добавлено: 19 апр 2007, 15:07
WildSery
ess писал(а):Но на рабоче базе будут трудности с удалением индекса, он постоянно in use.
Не меняй метаданные на ходу на рабочей базе. Можешь огрести проблем куда как серьёзнее чем object in use...