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

Модераторы: kdv, CyberMax

Ответить
Solo
Сообщения: 108
Зарегистрирован: 18 апр 2005, 04:05

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

Сообщение Solo » 21 фев 2007, 12:27

Использую 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.
Пробую временно деактивировать индексы - та же штука.
На той таблице, на которую ссылается - тоже не могу индекс удалить
Или я уже торможу?

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 21 фев 2007, 12:58

Дропни констрейн. А вообще - зачем тебе уникальный индекс? С дбф недавно слез? Читай про отличия индексов и контрейнов.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 21 фев 2007, 13:13

"изменить индекс" - это сильно. Вот до чего доводит IBExpert....

Solo
Сообщения: 108
Зарегистрирован: 18 апр 2005, 04:05

Сообщение Solo » 21 фев 2007, 13:26

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

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

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 21 фев 2007, 13:56

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

Solo
Сообщения: 108
Зарегистрирован: 18 апр 2005, 04:05

Сообщение Solo » 21 фев 2007, 14:54

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

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 21 фев 2007, 15:42

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

Solo
Сообщения: 108
Зарегистрирован: 18 апр 2005, 04:05

Сообщение Solo » 21 фев 2007, 17:17

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

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 21 фев 2007, 17:48

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

Ответить