Прочитал следующие статьи:
http://www.ibase.ru/devinfo/ibtrans.htm
http://www.ibase.ru/devinfo/ibx.htm
http://ibase.ru/devinfo/dontdoit.htm
http://ibase.ru/devinfo/utl.htm
после этого, кое-что стало понятнее, а что-то не очень.
Использую InterBase 7.0.0.206, C++ Builder RAD XE3
Давно хотел разобраться с разделением транзакций, но руки не доходили.
В DataModule компоненты TIBDatabase (IBDB), TIBTransaction (TR_R, TR_W), TIBDataSet (IBDS_DATA), TIBSQL (IBSQL).
В инспекторе объектов для IBDB устанавливаю DefaultTransaction в качестве TR_R.
Для TR_R - DefaultDatabase устанавливаю IBDB. Также задаю параметры в качестве читающей транзакции
Код: Выделить всё
read_committed
rec_version
read
Затем для TR_W указываю IBDB.
Для IBSQL соответственно IBDB и TR_W.
Подскажите пожалуйста ответы на следующие вопросы:
1) Будет-ли влиять как-то на работу тот факт, что у IBDB в качестве DefaultTransaction указана TR_R, а не TR_W?
2) Обязательно-ли для TR_W указывать параметры, которые назначают данную транзакцию "пишущей" или нужно оставлять по умолчанию (чтение-запись). (Планирую редактирование данных производить стандартными компонентами, а не из DataControls.)
Если нужно, то как правильно будет и будет-ли правильно задать параметры таким образом:
Код: Выделить всё
read_committed
rec_version
write
wite
4) Как будут видны изменения данных в одной транзакции при изменении их в другой? Я имею ввиду, то что нужно-ли повторно выполнять запрос select в IBDS_DATA (TR_R) после изменения данных в IBSQL (TR_W) или это можно как-то настроить...? Или после завершения работы "пишущей" транзакции нужно "переоткрывать" запрос на выборку данных в компоненте привязанный к "читающей" транзакции?
5) Вопрос немножко не по теме: Можно-ли производить вставку данных (допустим при импорте) так сказать блоками, как это делается например в MySQL
Код: Выделить всё
insert into TB
set (Fld1, Fld2, Fld3, ... FldN)
values(Val1, Val2, Val3, ... ValN), (Val1, Val2, Val3, ... ValN), (Val1, Val2, Val3, ... ValN)
P.S. Какие еще могут быть нюансы/грабли, на которые следует обратить внимание?
Спасибо.
С Уважением, Дмитрий.