Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
1-1091711807
Bless
2004-08-05 17:16
2004.08.22
Не могу понять, зачем в эту процедуру передают параметр,...


1-1091481675
QuestionX
2004-08-03 01:21
2004.08.22
Рисование на форме поверх всех компонентов


14-1091597597
Некрофил-затейник__
2004-08-04 09:33
2004.08.22
США превратятся в тоталитарную сверхдержаву?


14-1091186602
WondeRu
2004-07-30 15:23
2004.08.22
Какая часть Вашего дохода уходит на "поддержание"...


14-1090936185
Сериалоненавистница
2004-07-27 17:49
2004.08.22
Кому нравятся сериалы?