![]() |
|
Модераторы: LSD |
![]()
|
|
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: нет Всего: 58 |
Доброго времени суток.
Имеется функция Delphi для выполнения простых запросов (Execute). Как используя только ее, можно реализовать механизм транзакция в виде:
При этом необходимо предусмотреть откат всех операций в случае ошибки. Заранее спасибо за предложенные идеи/варианты. |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
не завершать транзакцию внутри функции Delphi для выполнения простых запросов (Execute) и откатывать транзакцию в случае возникновения ошибки.
Это сообщение отредактировал(а) Zloxa - 17.1.2011, 23:59 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: нет Всего: 58 |
Zloxa, пока имеется вот такой фрагмент:
|
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
о чем мне этот фрагмент, с Вашей точки зрения, должен рассказать? Это сообщение отредактировал(а) Zloxa - 18.1.2011, 08:49 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
Зачем откат вы производите на сейвпоинт? Почему не просто rollback?
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: нет Всего: 58 |
чтобы откатиться и определенному моменту, или я неправильно понимаю?
|
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
Keeper89, а коммитите вы тоже определенный момент?
Просто не однозначно какт-то. В случае успеха вы коммитите всю транзакцию, в случае ошибки - откатываете только ее часть. Обычно так не делают. Откат к сейвпоинту обычно применяют в процедурах, не управляющих транзакцией - не начинающих ее и не завершающих. Предполагается, что управление транзакциясми в этом случае производится уровнем выше. Если же ваша процедура таки управляет транзакцией, то откатывайте ее уж полностью. Это сообщение отредактировал(а) Zloxa - 18.1.2011, 14:00 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Keeper89 |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: нет Всего: 58 |
Нет, коммит подразумевается только для того, что сделано с сейвпоинта. Может я синтаксически неверно это оформил? Переделал следующим образом (на ХП):
Так более грамотно, или лучше вообще убрать сейвпоинт и просто делать ROLLBACK? |
||||
|
|||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
так не бывает. Коммит зафиксирует все что было понаделано и до сейвпоинта(если было). Именно поэтому роллбак к сейвпоинту рядом с коммитом выглядит несколько... неорганично. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: нет Всего: 58 |
||||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
Keeper89, сколько мне еще раз повторить что коммит "части инструкций" не бывает? Сколько мне еще раз повторить, что там где используется коммит, уместен роллбек, а не ролбек к сейвпоинту?
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: нет Всего: 58 |
Т.е. здесь имеется ошибка?
Так правильно? И если как можно разобраться с моей проблемой? |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
Где Вы там узрели фиксацию транзакции? так - разумно. правильно было и раньше. одна оговорка, эксепшн чтоб не терять
Наверняка - можно, просто Я не понимаю в чем Ваша проблема и о чем мы тут в этом топике дискутируем. Сдается мне, Вам просто вскучнулось и Вы решили уныло пообсуждать банальные вещи. Это сообщение отредактировал(а) Zloxa - 20.1.2011, 09:48 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
![]()
|
| Правила форума "Oracle" | |
|
|
Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Oracle | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |