Реализован Master-Detail c использованием TIBCQuery и двух транзакций (одна со свойством IsolationLevel iblReadOnlyReadCommitted, вторая на запись -- iblReadCommitted, транзакции общие для мастера и детейла) . В качестве мастера выступает запрос к глобальной временной таблице (уникальность строки обеспечивается двумя полями), в качестве детализированных выступают обычные таблицы.
DDL глобальной таблицы
Code: Select all
CREATE GLOBAL TEMPORARY TABLE TEMP_ID_SOTR (
ID_TEMP INTEGER,
ID_SOTR INTEGER
) ON COMMIT PRESERVE ROWS;
Для мастера задан запрос в свойстве SQL
Code: Select all
select
*
from TEMP_ID_SOTR
where ID_TEMP = :pID_TEMP
Code: Select all
select
*
from TEMP_ID_SOTR
WHERE
ID_TEMP = :pID_TEMP and
ID_SOTR = :OLD_ID_SOTR
Code: Select all
SELECT * FROM A_SOTR
. В dbMonitor показывается, что отрабатывает рефреш запросRefresh failed. Found 32 records
Code: Select all
SELECT ID_TEMP AS IBC$0 FROM TEMP_ID_SOTR TMP
WHERE
ID_TEMP = :ID_TEMP
1. Подскажите почему не отрабатывает в ручную заданный рефреш? Как правильно сделать рефреш?
И ещё прошу разъяснить.
Заметил, согласно тому что показывает dbMonitor, что update детальной таблицы происходит в транзакции только для чтения и прописанной в свойстве Transaction, а не UpdateTransaction.
Прописано в Transaction.Params
Code: Select all
nowait
read_committed
rec_version
read
Code: Select all
nowait
read_committed
rec_version