答案 0 :(得分:1)
您需要三个触发器,在D
上执行所需的更新。例如。对于表A
,这可能是:
CREATE OR REPLACE TRIGGER trg_ins_upd_A
AFTER INSERT OR UPDATE ON A
FOR EACH ROW
DECLARE
-- required declarations
BEGIN
IF INSERTING THEN
UPDATE D
SET column1 = :new.column
WHERE column1 = :old.column ...
END IF;
IF UPDATING THEN
-- do required updates on D here
END IF;
END;
如果您有一个执行此更新的存储过程,您可能会实现类似这样的内容:
CREATE OR REPLACE TRIGGER trg_ins_upd_A
AFTER INSERT OR UPDATE ON A
FOR EACH ROW
DECLARE
-- required declarations
BEGIN
IF INSERTING THEN
my_procedure_one (...);
END IF;
IF UPDATING THEN
my_procedure_two (...);
END IF;
END;
答案 1 :(得分:1)
根据创建第四个表数据的查询复杂性,使用on-commit快速刷新物化视图可以更好地实现(更强大,更灵活,代码更少)。
http://docs.oracle.com/cd/B28359_01/server.111/b28326/repmview.htm