![]() |
|
Модераторы: Akella |
![]()
|
|
| ArnoldLane |
|
||||||||||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 14.6.2005 Репутация: нет Всего: нет |
Суть вопроса слегка отвлеченная, но честно говоря очень интригующая, по крайней мере для меня.
Есть две таблицы:
В Runtime в таблицу ORDER_TMP вставляeтся выборка из третьей таблицы: <1>
, затем выполняется: <2>
Далее заполняем вновь созданные поля необходимыми значениями. <3>
Не трудно заметить, что на данном этапе две таблицы ORDERS и ORDER_TMP абсолютно идентичны по структуре. Что позволяет нам надеятся на выполнение следуюшего предложения: <4>
Теперь о транзакциях, предложения <1>,<2> и <3> выполнялись в рамках одной транзакции, а <4> в рамках уже другой. Теперь прикрасно видно, что я ошибся, предложением <2> я изменил структуру таблицы, но не сделал подтверждения и сразу пытаюсь заполнить только что созданные поля значениями. Так вот теперь самое интересное. Первая транзакция выполняется, по-крайней мере Exception не возникает. А вот при выполнении второй транзакции точнее предложения <4>, возникает Exception с текстом - "conversion error from string '25.07.2005'". ПОЧЕМУ? |
||||||||||
|
|||||||||||
| kdv |
|
|||
|
Unregistered |
ты налетел на грабли. DDL выполнять надо в отдельной транзакции, каждый оператор завершая commit-ом.
Самый худший случай - именнт то что ты сделал, то есть alter table add, а потом update, в одной транзакции. |
|||
|
||||
![]()
|
| Правила форума "Interbase" | |
|
|
Обязательно указание: 1. Версию InterBase (Firebird, Yaffil) 2. Способа доступа (ADO, BDE, IBX и т.д.)
Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Firebird, Interbase | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |