假设有两个不同的Oracle数据库,A和B,由从A到B的dblink链接。
在数据库A上有一个这样的表:
CREATE TABLE LOCAL_TABLE (
TAB_PK NUMBER(3) NOT NULL PRIMARY KEY,
NAME VARCHAR2(10)
);
在数据库B上,我们有一个这样的表:
CREATE TABLE REMOTE_TABLE (
TAB_PK NUMBER(3) NOT NULL PRIMARY KEY,
LOCAL_TABLE_FK NUMBER(3),
QUANTITY NUMBER(3)
);
上述表格显然过于简单,可能并不完全准确,但应该可以重现我遇到的问题。
表A和表B都由许多客户端应用程序填充,这些应用程序在每个应用程序中插入相关数据。
现在假设在数据库A上有这样的视图:
CREATE OR REPLACE VIEW LINKING_VIEW AS
SELECT
L.TAB_PK,
L.NAME,
R.QUANTITY
FROM
LOCAL_TABLE L INNER JOIN REMOTE_TABLE@REMOTE_DB R ON L.TAB_PK = R.LOCAL_TABLE_FK
我的WCF服务的代码查询了这个视图,它暴露了两个方法:
我所遇到的是,当我多次调用UpdateQuantity然后调用QueryView时,我不会在第一次调用时获得更新的数量,但仅限于成功调用或经过一段时间后。
我没有发布任何应用程序代码,因为我不认为问题出在应用程序代码中。我设法重现更新表并使用SQLDeveloper或Toad查询视图的问题。
除了将两个表放在同一个数据库中之外,还有任何建议的解决方案吗?