Текущий архив: 2004.08.22;
Скачать: CL | DM;
Вниз
корректно ли я использую транзакции? Найти похожие ветки
← →
MORA (2004-07-28 18:29) [0]Мне надо при сохранении ЗАКАЗА сохранить все, что ЗАКАЗАНО. Использую транзакцию:
db.StartTransaction;
try
tblOrders.Post;
db.Commit;
except
db.Rollback;
end;
а в обработчике tblOrders.BeforePost пишу так:
try
// в цикле пытаюсь запостить все что ЗАКАЗАНО
except
// а если не получилось, выкидываю Exception дальше
raise; // или Abort;
end;
← →
Reindeer Moss Eater © (2004-07-28 18:33) [1]Если :
одна таблица
одна запись
То зачем явная транзакция?
Она и так будет без твоих усилий.
← →
MORA (2004-07-28 18:37) [2]
> Reindeer Moss Eater © (28.07.04 18:33) [1]
> Если :
даже если одна: например, удачно записалось ЗАКАЗАНО, которое ссылается на ЗАКАЗ, а сам ЗАКАЗ не запостился. ЗАКАЗАНО - повисло как сирота, никому не принадлежащая
← →
Reindeer Moss Eater © (2004-07-28 18:38) [3]Транзакция эта же самая стартанет точно также.
Даже если убрать вызов её из кода.
← →
MORA (2004-07-28 18:40) [4]
> Транзакция эта же самая стартанет точно также.
переведи....
← →
Reindeer Moss Eater © (2004-07-28 18:43) [5]Перевожу.
Если из твоего кода убрать строки связанные с транзакцией, то транзакция все равно будет.
Точно такая же как описана в коде твоем.
Перевел?
← →
MORA (2004-07-28 18:44) [6]хотите сказать, что если BeforePost выкинет Exception, то и вызывающий его Post не выполнится? Без транзакции?
← →
Reindeer Moss Eater © (2004-07-28 18:49) [7]Конечно.
Только транзакция все равно будет.
← →
MORA (2004-07-28 18:52) [8]ну а если записей много: первые 10000 записались, а 10001-ая не захотела. Первые 10000 откатятся? (Извините, если вопрос дублируется :))
← →
Reindeer Moss Eater © (2004-07-28 18:54) [9]А где в твоем коде видно, что в транзакции обрабатываются N записей, а не одна?
Ты спрашиваешь про корректно ли я использую транзакции.
А я отвечаю. Глядя на код.
← →
MORA (2004-07-28 18:59) [10]
> А где в твоем коде видно, что в транзакции обрабатываются
> N записей, а не одна?
в обработчике BeforePost - цикл. (см. [1])
Код я не привел, но цикл есть
← →
Reindeer Moss Eater © (2004-07-28 19:00) [11]Вот поэтому в посте номер один я и спросил "зачем", а не сказал, что "незачем".
← →
MORA (2004-07-28 19:02) [12]
> Вот поэтому в посте номер один я и спросил "зачем", а не
> сказал, что "незачем".
дык таки надо?
[1]?
← →
Reindeer Moss Eater © (2004-07-28 19:03) [13]А я знаю?
Код я не привел, но цикл есть
А я знаю, какой там цикл? По записям ли он, или просто по полям одной записи.
← →
MORA (2004-07-28 19:09) [14]
>
> Reindeer Moss Eater © (28.07.04 19:03)
ясно. цикл по записям другой таблицы.
кстати, при неудаче надо делать Cancel или Rollback это сам делает?
← →
bushmen © (2004-07-28 20:11) [15]> tblOrders.Post;
перед тем, как сделать Post, еще бы сделать Append надо. И боюсь, что в таком контексте это работать не будет.
Страницы: 1 вся ветка
Текущий архив: 2004.08.22;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.051 c