Главная страница
    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.007 c
1-91277
Fighter
2003-04-17 12:03
2003.04.28
Как реализовать автоподстановку?


1-91363
maxon
2003-04-15 12:17
2003.04.28
про предков


1-91373
дикий Джо
2003-04-16 09:11
2003.04.28
Как сделать чтобы MDIChild Form при сворачивании исчезала?


14-91510
Sheng
2003-04-10 08:32
2003.04.28
Токо что нашёл маааленький недочёт у форума


14-91490
vopros
2003-04-10 12:14
2003.04.28
Кто нибудь знает что нибудь про программиование





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский