Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.28;
Скачать: CL | DM;

Вниз

Помогите разобраться с транзакциями в IB   Найти похожие ветки 

 
GRR   (2003-04-10 10:12) [0]

Есть классическая (наверное) задача. Нужно сделать примерно следующее:

"Старт транзакции"
Try
while ... do
begin
модификация таблицы 1;
модификация таблицы 2;
end;
Except
"Откат транзакции"
Exit
End
"Подтверждение транзакции"

Т.е. транзакцию подтверждаем в случае успешного выполнения целого цикла модификаций (например расход N позиций товаров в одной таблице и одновременный приход их в другой) , т.е. подтверждаем "или все или ничего".

В чем вопрос.
IBTrancaction, оказывается, стартует автоматически с открытием таблиц. Поэтому когда пишешь StartTransaction Delphi ругается. В книге вычитал как правильно делать. Суть - выглядит так:

Try
while ... do
begin
модификация таблицы 1;
модификация таблицы 2;
end;
Except
"Откат транзакции"
Exit
End
"Подтверждение транзакции"
"Старт Транзакции"

Что меня беспокоит. У меня в проге еще 2 десятка таблиц, с открытием хотя бы одной из них естественно стартует транзакция, и если я сделаю как пишут в книгах я не уверен какое количество изменений я отменю через RollBack, потому как не знаю точно где произошло StartTransaction. К тому же в программе используется и простая модификация таблиц прямо через DBGrid-ы. Не получится ли что я и их прихвачу делая откат транзакции.

Короче изложить не получилось, извините.


 
Johnmen ©   (2003-04-10 10:16) [1]

Во-первых :

"Старт транзакции"
Try
while ... do
begin
модификация таблицы 1;
модификация таблицы 2;
end;
"Подтверждение транзакции"
Except
"Откат транзакции"
End

Во-вторых, если выдается сообщение, что тр. уже активна, значит она была стартована неявно при выполнении любого запроса.


 
Соловьев ©   (2003-04-10 10:36) [2]

Transaction.InTransaction


 
GRR   (2003-04-10 10:52) [3]


> Johnmen © (10.04.03 10:16)


1. согласен, техническая ошибка
2. в этом-то и проблема, как обеспечить чтобы при откате не "зацепило" ненужные модифакации, произведенные после нгеявного старта транзакции.


 
Romkin ©   (2003-04-10 10:58) [4]

TIBTransaction модет быть произвольное количество, вот и распределяй, и открывай, когда надо, в чем проблема?


 
Johnmen ©   (2003-04-10 11:09) [5]

Всегда делать только явный старт тр-ий !
Чтобы самому контролировать и управлять процессом...


 
GRR   (2003-04-10 12:38) [6]


> Johnmen © (10.04.03 11:09)
> Всегда делать только явный старт тр-ий !
> Чтобы самому контролировать и управлять процессом...

Да ... наверное

Всем спасибо.



Страницы: 1 вся ветка

Текущий архив: 2003.04.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
1-91393
silenser
2003-04-16 15:16
2003.04.28
Delphi 7


1-91274
Pk
2003-04-16 17:15
2003.04.28
Распечатать содержимое Gridа


1-91357
shurik
2003-04-15 21:30
2003.04.28
стиль ХР


1-91391
Jam
2003-04-16 10:18
2003.04.28
Слияние файлов


1-91269
Vin_Ghost
2003-04-16 20:38
2003.04.28
Работа с нетипизированными файлами