我有 3 张桌子 A、B、C。我有这 3 个表的存储过程,其中在第 4 个表 D 中插入了连接条件。现在我想要的是对这 3 个表(A、B、C)进行的“任何插入或更新”应该更新第 4 个表 D。任何一个都可以请问如何在pl/sql中编写触发器?
问问题
15842 次
2 回答
1
根据创建第四个表数据的查询复杂性,这可能通过提交时快速刷新物化视图更好地实现(更健壮,具有更大的灵活性和更少的代码)。
http://docs.oracle.com/cd/B28359_01/server.111/b28326/repmview.htm
于 2013-10-03T09:24:26.280 回答
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;
于 2013-10-03T09:03:35.070 回答