未测试,供参考。Oracle 触发器对本表增删改限制比较多,只能用自治事务。 CREATE OR REPLACE TRIGGER TR_B_AF_IU after INSERT OR UPDATE ON B FOR EACH ROW PRAGMA AUTONOMOUS_TRANSACTION; BEGIN if(:NEW.任务进度=‘完成’) then update A set 任务进度=(select case when count(1)>0 then '未完成' else '完成' end from B where 完成情况=‘未完成’ ) and 任务id=.OLD.任务ID commit; end if; END;备注: (1)只有before insert触发器中才可以查询或更新本表 (2)before/after update、before/after delete、after insert5种情况都不可以查询或更新本表。 (3)使用自治事务可以实现任意触发器查本表。但不能实现在自治事务中更新本表。 查询本表的情况是最常见的。
CREATE OR REPLACE TRIGGER TR_B_AF_IU
after INSERT OR UPDATE
ON B
FOR EACH ROW
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
if(:NEW.任务进度=‘完成’) then
update A set 任务进度=(select case when count(1)>0 then '未完成' else '完成' end from B where 完成情况=‘未完成’ ) and 任务id=.OLD.任务ID
commit;
end if;
END;备注:
(1)只有before insert触发器中才可以查询或更新本表
(2)before/after update、before/after delete、after insert5种情况都不可以查询或更新本表。
(3)使用自治事务可以实现任意触发器查本表。但不能实现在自治事务中更新本表。
查询本表的情况是最常见的。
问下这个会影响效率么