Запросы, планы, оптимизация запросов, ...
Модераторы: kdv, CyberMax
-
}{unter
- Сообщения: 3
- Зарегистрирован: 30 май 2006, 11:25
Сообщение
}{unter » 30 май 2006, 11:50
В базе на FireBird 1.5 есть 30 таблиц. Для примера приведу структуру одной из них:
Код: Выделить всё
SET NAMES WIN1251;
CREATE TABLE SPISANIE (
SUMMA_ZA_TO DOUBLE PRECISION,
SUMMA_POST DOUBLE PRECISION,
MONTH_YEAR VARCHAR(30) NOT NULL COLLATE PXW_CYRL,
ID_AB CHAR(12) NOT NULL COLLATE PXW_CYRL,
ASSS INTEGER NOT NULL
);
ASSS я добавил для эксперимента.
При попытке исправить значение в ID_AB или в ASSS происходит ошибка:
Error Message:
----------------------------------------
Arithmetic overflow or division by zero has occurred.
arithmetic exception, numeric overflow, or string truncation.
Cannot transliterate character between character sets.
Но добавить новые строки данных можно без проблем!!!
Работаю с базой под SYSDBA в IBExpert v.2006.05.24 (
http://www.ibexpert.com/rus)
Почему такие глюки происходят? Может кто сталкивался или подскажет путное, а то дело не терпит надо что-то делать. Причем попробовал создать новую таблицу в этой же базе. И в этой таблице всё без проблем добавляется, редактируется,...
-
}{unter
- Сообщения: 3
- Зарегистрирован: 30 май 2006, 11:25
Сообщение
}{unter » 31 май 2006, 12:00
В продолжении темы. Требуется изменить длину поля ID_AB, сохранив данные. Для этого загоняю в делфийский компонент IBScript следующий скрипт:
Код: Выделить всё
ALTER TABLE SPISANIE ADD Temp VARCHAR(11);
UPDATE SPISANIE SET Temp=ID_AB;
ALTER TABLE SPISANIE DROP ID_AB;
ALTER TABLE SPISANIE ADD ID_AB CHAR(12);
UPDATE SPISANIE SET ID_AB=Temp;
ALTER TABLE SPISANIE DROP Temp;
Но после отработки получаем ID_AB CHAR(12) с потеренными данными. Почему-то не работает строчка UPDATE SPISANIE SET Temp=ID_AB;
Или я совсем неправильно делаю?
-
dimitr
- Разработчик Firebird
- Сообщения: 888
- Зарегистрирован: 26 окт 2004, 16:20
Сообщение
dimitr » 31 май 2006, 12:57
воткни коммит после каждого альтера