首先在两个不同的数据库中创建以下表格
Fragment1:
Employee(EID number(4)PRIMARY KEY, Name varchar2(20),Address varchar2(50));
Fragment2:
Employee(EID number(4),Dep_Id number(4),Mgr_Id REFERENCES Employee(EID),Salary number(6));
然后 创建一个触发器以将数据插入到适当的表中。
我无法在Mgr_Id中使用[片段1]的REFERENCE Employee(EID)
请帮助
答案 0 :(得分:0)
您无法通过dblink实现FK约束。你可以做的是写一个模仿FK约束功能的触发器。像这样:
首先,您需要创建一个dblink(例如,remote)到server2
CREATE OR REPLACE TRIGGER Example
AFTER INSERT ON fagment1
FOR EACH ROW
DECLARE
cuenta number;
BEGIN
select count(*)
into cuenta
from fagment2@Remote f2
where f2.EID = :new.EID
and rownum=1;
IF cuenta = 0 then
raise_application_error(-20001,'EID: '||:new.EID||' not found');
END IF;
EXCEPTION
WHEN OTHERS THEN --dblink down?
raise_application_error(-20001,'EID: '||:new.EID||' not found');
END;