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

Как изменить индекс?

Добавлено: 21 фев 2007, 12:27
Solo
Использую IBExpert
В таблице Insured есть индекс FK_Insured1 по 2-м полям
NCont
NUnitCode
Не уникальный. Надо, чтобы был уникальный. Пытаюсь изменить - говорит:

Код: Выделить всё

This operation is not defined for system tables.
unsuccessful metadata update.
ERASE RDB$INDICES failed.
action cancelled by trigger (1) to preserve data integrity.
Cannot delete index used by an Integrity Constraint.
Пробую временно деактивировать индексы - та же штука.
На той таблице, на которую ссылается - тоже не могу индекс удалить
Или я уже торможу?

Добавлено: 21 фев 2007, 12:58
Dimitry Sibiryakov
Дропни констрейн. А вообще - зачем тебе уникальный индекс? С дбф недавно слез? Читай про отличия индексов и контрейнов.

Добавлено: 21 фев 2007, 13:13
kdv
"изменить индекс" - это сильно. Вот до чего доводит IBExpert....

Добавлено: 21 фев 2007, 13:26
Solo
kdv писал(а):"изменить индекс" - это сильно. Вот до чего доводит IBExpert....
Ну давайте выбросим стиральные машины, электродрели, и будем в notepad электронные письма писать, в том числе заголовки

Ну до изменения дело не доходит. Сначала ИБЭксперт пытается его как раз дропнуть, и на этом останавливается. Может, он хочет, чтобы данных не было?

Добавлено: 21 фев 2007, 13:56
CyberMax
Solo писал(а):Ну давайте выбросим стиральные машины, электродрели, и будем в notepad электронные письма писать, в том числе заголовки
Речь идет о том, что пользователь перестает понимать, что происходит внутри. Все его знание сводится к "засовываю грязное белье, ставлю режим и вытаскиваю чистое". А как оно стало чистое - фик его знает...
Solo писал(а):Ну до изменения дело не доходит. Сначала ИБЭксперт пытается его как раз дропнуть, и на этом останавливается. Может, он хочет, чтобы данных не было?
Фактически там нет изменения. Есть только удаление и создание индекса с новыми параметрами.
Мне вот интересно, как ты этот индекс пытаешься сделать уникальным?

Добавлено: 21 фев 2007, 14:54
Solo
Мне вот интересно, как ты этот индекс пытаешься сделать уникальным?
Да все, разобрался уже, спасибо. А насчет работы без IBExperta - он перед каждой компиляцией демонстрирует скрипт... Так что там все видно...

Добавлено: 21 фев 2007, 15:42
WildSery
Solo писал(а):Так что там все видно...
Это тебе видно.
А мы должны догадаться, что же ты подразумевал под "изменить индекс".

Добавлено: 21 фев 2007, 17:17
Solo
WildSery писал(а):
Solo писал(а):Так что там все видно...
Это тебе видно.
А мы должны догадаться, что же ты подразумевал под "изменить индекс".
Удалить и сделать новый

Добавлено: 21 фев 2007, 17:48
kdv
Удалить и сделать новый
если индекс был создан сам по себе, то его и удалить можно без проблем. Если индекс был автоматически создан при создании constraint PK, FK, Unique, то и удалится такой индекс ТОЛЬКО при удалении соответствующего constraint.