Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.04.28;
Скачать: [xml.tar.bz2];

Вниз

Помогите разобраться с транзакциями в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.008 c
1-91334
anbezr
2003-04-15 10:54
2003.04.28
Как правильно прервать создание компонента


14-91450
Sergey
2003-04-11 11:29
2003.04.28
PHP скрипт конвертации базы Dbf->Oracle


6-91439
freeek10
2003-03-04 11:44
2003.04.28
VCL в консольно приложении


3-91159
Knight
2003-04-09 14:13
2003.04.28
Программы скрытия дисков и управления доступом к папкам и файлам


1-91312
Stranger
2003-04-17 11:15
2003.04.28
Показ формы из Com объекта





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский