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

Вниз

TpFIBQuery и транзакции   Найти похожие ветки 

 
User_OKA   (2002-04-22 09:31) [0]

Для запросов к базе IB использую TpFIBQuery (св-во Options.qoStartTransaction:=true). Нужно ли после ExecQuery (запрос на чтение типа "SELECT...")всякий раз делать Commit?


 
Johnmen   (2002-04-22 09:47) [1]

Нет.


 
Turalyon   (2002-04-22 09:50) [2]

>Johnmen ©
Я ведь так понял, что программа стартует тразакцию при любом обращение к базе??? Даже на простую выборку?


 
Johnmen   (2002-04-22 10:19) [3]

>Turalyon © : Вот именно ! А после выполнения Commit полученный НД будет закрыт...


 
User_OKA   (2002-04-22 12:28) [4]

to Johnmen
А количество открытых транзакций как-то лимитируется?


 
Johnmen   (2002-04-22 13:32) [5]

Обычно в приложении не используют более двух транзакций одновременно. Лимит существует на все :) В данном случае я его не знаю, но думаю, что он весьма велик...


 
User_OKA   (2002-04-22 13:49) [6]

to Johnmen
Интересное кино! Получается, если я 10 раз сделал запрос на чтение TpFIBQuery.ExecQuery, то у меня 10 транзакций открылось. А commit делать не надо. Как мне лишние транзакции прикрыть? Может вообще другой компонент использовать?


 
Johnmen   (2002-04-22 13:58) [7]

Я что-то не понял, а где pFIBTransaction ?


 
Turalyon   (2002-04-22 14:00) [8]

Нет, если у тебя компонент TpFIBQuery привязан к одной транзакции, то все будет происходить только в ней, просто после выполнения запроса транзакция не закроется... пока ей не скажешь.
Правда е я не в курсе как происходит связка с транзакцией именно у этого компонента, я сужу по IBQuery, но подозреваю, что так же.


 
User_OKA   (2002-04-22 14:43) [9]

to Turalyon ©
Что-то не въеду! Каждый ExecSQL стартует транзакцию (грубо говоря, как если бы при отключенном св-ве qoStartTransaction я сам задавал TpFIBTransaction.StartTransaction), при этом последующая транзакция закрывает предыдущую?
Или я совсем загнался?


 
Johnmen   (2002-04-22 14:58) [10]

Наверно загнался...:)
Не ставь никаких qoStartTransaction, а используй pFIBTransaction ...

>при этом последующая транзакция закрывает предыдущую?

это можно легко проверить !
хотя я думаю, что нет....



 
Turalyon   (2002-04-22 15:12) [11]

Я обчно делаю так, как предложил Johnmen © , т.е. стартую транзакцию явно... в твоем случае TpFIBTransaction.StartTransaction и дальше все что будет происходить в TpFIBQuery (которая связана с этой транзакцией), будет делаться в одной транзакции, до тех пор пока ты ее не закроешь... (лучше так же явно). Т.е. можешь хоть десять выборок сделать и еще и какие нить изменения в таблицу внести.
А, на сколько я понимаю, ExecSQL стартует ее неявно, т.е. если у тебя она не была запущена, запускает, если запущена, то все телодвижения делает в рамках это транзакции.


 
Константин   (2002-04-29 09:32) [12]

Я думаю так.
Трансакция это трансакция! Она либо завершается Commit или Rollback. Других вариантов быть просто не может.
Если Вы используете Query для создания запроса, то вы работаете в рамках текущей трансакции и если работа не окончена, зачем запускать еще одну трансакцию? Работайте дальше. Открывайте и закрывайте свой Query сколько хотите он трансакцией не управляет.



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

Форум: "Базы";
Текущий архив: 2002.05.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
1-73105
BAHO
2002-05-07 00:23
2002.05.23
Расчет времени...


1-73158
Грифон
2002-05-12 22:44
2002.05.23
однооконный многофайловый редактор


1-73132
Konsul
2002-05-13 15:38
2002.05.23
Вопрос о свойствах формы


1-73139
VID
2002-05-05 18:20
2002.05.23
Определение состояния контексного меню (TPopup)


1-73305
Servis
2002-05-11 22:14
2002.05.23
О формах в DLL





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