Oracle触发器修改数据时同步执行插入该条数据

Posted qingxin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle触发器修改数据时同步执行插入该条数据相关的知识,希望对你有一定的参考价值。

原创:lixx 

---从UNWIREDATA 表中查询数据,如果该表中地磁状态发生改变(CARDSTATE)执行插入到MAINTABLE 表中
---根据唯一值ERID判断,如果ERID值存在,修改该条数据中的地磁状态属性(CARDSTATE)
create or replace trigger tri_dici after

update of CARDSTATE ON UNWIREDATA FOR EACH ROW

declare
V_NUM number;
BEGIN
----多次查询时,每次都将v_num设置成为0
V_NUM := 0;
----判断触发器 ERID 是否存在
select count(*) into V_NUM from MAINTABLE M where M.ERID = :new.ERID;
----如果存在立即修改CARDSTATE
if V_NUM > 0 then
update MAINTABLE M set M.CARDSTATE=:new.CARDSTATE where M.ERID=:new.erid;
else
---执行插入该数据到MAINTABLE表中
insert into MAINTABLE(UNWIREID,ERID,CARDSTATE,BERTTRYSATE,DATATIME) values(:new.unwireid,:new.erid,:new.cardstate,:new.berttrysate,sysdate);
end if;
END;

以上是关于Oracle触发器修改数据时同步执行插入该条数据的主要内容,如果未能解决你的问题,请参考以下文章

oracle触发器中定时执行sql

Oracle之触发器

Oracle不同数据库之间同步处理方案

oracle创建触发器(例:当有操作x_yonghu表指定字段并且字段有修改时,插入日志表)

关系型数据库同步

Oracle利用触发器更新插入时某一列的值