Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не получается сменить тип поля, INTEGER на SMALLINT 
V
    Опции темы
ksili
Дата 22.5.2007, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



В таблице T_TARIF первичный индекс построен по полю ID_TARIF, которое имеет тип INTEGER. Поскольку записей в этой таблице очень мало, и много никогда не будет, решил сменить тип с INTEGER на SMALLINT, так как это поле хранится для каждой записи в другой таблице T_USERS (в ней много записей). Таким образом, хочу уменьшить физический размер таблицы T_USERS.
Однако при изменении типа поля IBExpert ругается:
Код

Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
action cancelled by trigger (1) to preserve data integrity.
Cannot update index segment used by an Integrity Constraint.

Я так понял, что мешают триггер и генератор, ответственные за инкремент поля ID_TARIF. Как их обойти? В них вроде тип поля не указан нигде... 
Можно ли изменить тип поля не удаляя триггер с генератором?


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Akella
Дата 22.5.2007, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



ну так попробуй удалить триггер, перед этим сохранив текст его скрипта

Добавлено через 42 секунды
Цитата(ksili @  22.5.2007,  08:25 Найти цитируемый пост)
Поскольку записей в этой таблице очень мало, и много никогда не будет, решил сменить тип с INTEGER на SMALLINT, 

не пудри себе мозги, пусть всё остаётся как есть  smile 
PM MAIL   Вверх
ksili
Дата 22.5.2007, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



посчитал, оказалось размер не намного уменьшится (другие поля много занимают). Так и быть не буду ничего менять.

Но всё равно интересно, генератор что ли вообще со SMALLINT работать не может? Или может но только если сразу под этот тип делать?


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Akella
Дата 22.5.2007, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



по идее "автоинкрементное" поле должно быть Int или лучше int64
PM MAIL   Вверх
Deniz
Дата 22.5.2007, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Триггер достаточно было закоментировать на время обновления, а потом ...
По поводу смены на SmallInt посмотри статью на www.ibase.ru


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.0559 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.