ЧАстые Вопросы и Ответы
Модераторы: kdv, CyberMax
-
ess
- Сообщения: 21
- Зарегистрирован: 26 июл 2006, 10:51
Сообщение
ess » 19 апр 2007, 07:28
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 зависимостей ?
-
mdfv
- Сообщения: 119
- Зарегистрирован: 23 май 2006, 15:53
Сообщение
mdfv » 19 апр 2007, 08:32
Легче взять IBExpert и посмотреть там зависимости.
Чуть труднее самому написать запрос из системных таблиц.
-
ess
- Сообщения: 21
- Зарегистрирован: 26 июл 2006, 10:51
Сообщение
ess » 19 апр 2007, 10:15
Да, но IBExpert не показывает зависимости FK
-
WildSery
- Заслуженный разработчик
- Сообщения: 1738
- Зарегистрирован: 05 июн 2006, 16:19
Сообщение
WildSery » 19 апр 2007, 10:21
Становишься в зависимостях на таблицу и смотришь таблицы, зависящие от неё. В тех, которых ссылки на поле с твоим FK - оно и есть.
-
ess
- Сообщения: 21
- Зарегистрирован: 26 июл 2006, 10:51
Сообщение
ess » 19 апр 2007, 10:27
Нашел.
FK не удалялся из-за того, что не мог удалиться индекс, используемый в собственных планах запросов.
Тогда вопрос: как можно удалить FK не удаляя индекс (если это вообще возможно)?
-
CyberMax
- Заслуженный разработчик
- Сообщения: 638
- Зарегистрирован: 31 янв 2006, 09:05
Сообщение
CyberMax » 19 апр 2007, 11:57
Индекс внешнего ключа нельзя удалить, так как необходим внешнему ключу. Дропай FK. А при необходимости создашь для этого столбца просто индекс.
-
ess
- Сообщения: 21
- Зарегистрирован: 26 июл 2006, 10:51
Сообщение
ess » 19 апр 2007, 12:43
CyberMax писал(а):Индекс внешнего ключа нельзя удалить, так как необходим внешнему ключу. Дропай FK. А при необходимости создашь для этого столбца просто индекс.
индекс как раз мне и надо оставить, а вот FK удалить!
-
ess
- Сообщения: 21
- Зарегистрирован: 26 июл 2006, 10:51
Сообщение
ess » 19 апр 2007, 12:53
Поясню:
я делаю скрипт, который в последствии должен отработать на рабочей базе, и индекс, созданный по FK, будет in use. Индекс прописан в планах (в SP).
-
hvlad
- Разработчик Firebird
- Сообщения: 1244
- Зарегистрирован: 21 мар 2005, 10:48
Сообщение
hvlad » 19 апр 2007, 13:13
Шо тут непонятного ? Пересоздавай свои СП также
-
ess
- Сообщения: 21
- Зарегистрирован: 26 июл 2006, 10:51
Сообщение
ess » 19 апр 2007, 13:16
hvlad писал(а):Шо тут непонятного ? Пересоздавай свои СП также
с SP проблем нет, пересоздам.
Но на рабоче базе будут трудности с удалением индекса, он постоянно in use.
-
WildSery
- Заслуженный разработчик
- Сообщения: 1738
- Зарегистрирован: 05 июн 2006, 16:19
Сообщение
WildSery » 19 апр 2007, 15:07
ess писал(а):Но на рабоче базе будут трудности с удалением индекса, он постоянно in use.
Не меняй метаданные на ходу на рабочей базе. Можешь огрести проблем куда как серьёзнее чем object in use...