Страница 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...