Транзакции в IBX, простой вопрос

ЧАстые Вопросы и Ответы

Модераторы: kdv, CyberMax

Ответить
Kapacb
Сообщения: 7
Зарегистрирован: 10 апр 2008, 00:15

Транзакции в IBX, простой вопрос

Сообщение Kapacb » 10 апр 2008, 00:30

Пользую IBQuery + TIBUpdateSQLW и 2 транзакции
Вопрос такой:
есть ли разница между

Код: Выделить всё

trnWrite.StartTransaction;
IBQuery.Insert;
IBQuery.FieldByName('field1').AsInteger := 1;
IBQuery.Post;
trnWrite.Commit;
и

Код: Выделить всё

IBQuery.Insert;
IBQuery.FieldByName('field1').AsInteger := 1; // или показ окошка редактирования
trnWrite.StartTransaction;
IBQuery.Post;
trnWrite.Commit;
?
Не случается ли во втором случае чего-нибудь потустороннего в дебрях IBX?
ЗЫ Почему спрашиваю - в примерах на тему IBX второго варианта не встречал...

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 10 апр 2008, 09:51

второй вариант как-то странно выглядит. я бы его не использовал ни в каком случае.

Kapacb
Сообщения: 7
Зарегистрирован: 10 апр 2008, 00:15

Сообщение Kapacb » 10 апр 2008, 11:47

kdv писал(а):второй вариант как-то странно выглядит. я бы его не использовал ни в каком случае.
странно, что при вызове Insert транзакция, присоединенная к IBUpateSQLW, не стартует, а стартует на Post, отсюда и такой странный пример :D

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Сообщение stix-s » 10 апр 2008, 12:00

Kapacb писал(а):
kdv писал(а):второй вариант как-то странно выглядит. я бы его не использовал ни в каком случае.
странно, что при вызове Insert транзакция, присоединенная к IBUpateSQLW, не стартует, а стартует на Post, отсюда и такой странный пример :D
а с чего ты решил, что она стартует на Post, а не тогда, когда явно сказано?

Kapacb
Сообщения: 7
Зарегистрирован: 10 апр 2008, 00:15

Сообщение Kapacb » 10 апр 2008, 13:49

stix-s писал(а):а с чего ты решил, что она стартует на Post, а не тогда, когда явно сказано?
... в смысле, если явно не указывать StartTransaction. Вот я и решил, что ее можно стартовать непосредственно перед Post, а до того вызывать всякие окошки с DBEdit и т.д., в которые пользователь долго что-то вбивает

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 10 апр 2008, 14:41

ответ простой - смотришь в IBSQLMonitor, и проверяешь, нет ли левых стартов транзакций в твоем простом куске кода.

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Сообщение stix-s » 10 апр 2008, 15:13

Kapacb писал(а):
stix-s писал(а):а с чего ты решил, что она стартует на Post, а не тогда, когда явно сказано?
... в смысле, если явно не указывать StartTransaction. Вот я и решил, что ее можно стартовать непосредственно перед Post, а до того вызывать всякие окошки с DBEdit и т.д., в которые пользователь долго что-то вбивает
а я вот наплевал на DBEdit и т.д., использую обычные компоненты, затем по кнопке ГУД стартую транзакцию, Insert или Edit и Commit или Rollback и мне все равно, как долго ползатель заполняет компоненты

Ответить