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