我運行了幾個並行進程,每個進程都有一個打開連接到firebirdSQL數據庫的進程。一個進程將趕上張貼由火鳥一個更新事件:在AFTER UPDATE事件上在不同連接上接收不同的數據
SET TERM^;
CREATE TRIGGER CM_ARTIKEL_AU FOR ARTIKEL
ACTIVE AFTER UPDATE
POSITION 0
AS
BEGIN
/* Trigger body */
Insert into CM_ARTIKEL_CHANGES(
"TYPE",
ARTNR
)
values (
'UPDATE',
old.ARTIKELNR
);
POST_EVENT 'UPDATE_ARTICLE';
END^
SET TERM ;^
場景:
過程甲捕獲一個AFTER_UPDATE
事件,並經由RabbitMQ的過程乙和Ç有關的數據集,以通知檢查。
過程乙執行select
語句,並檢索更新的數據。一切安好。
過程Ç執行select
聲明,並檢索OLD數據,在執行更新之前!
任何建議爲什麼?
進程C使用具有在更新完成之前啓動的隔離級別快照的事務?您在執行這些檢查時需要啓動新的事務,或者確保使用讀取已提交的事務(根據應用程序的不同,它可能有其缺點)。 –