java oracle 触发器_自己第一次写触发器(oracle)-一个简单的触发器

自己第一次写触发器(oracle)

触发器1(tr_baseinfo_oplist):

当sto_base_info表执行INSERT,UPDATE,DELETE的时候(delete非物理删除),

执行触发器往STO_STORE_OP_LIST里记录一下操作日志(这里delete是修改is_delete)

CREATE OR REPLACE TRIGGER tr_baseinfo_oplist

AFTER  INSERT OR UPDATE  //在操作执行之后触发事件

ON sto_base_info  //在sto_base_info表上触发

FOR EACH ROW  //以行

BEGIN //下面就是具体的执行逻辑了

case

when updating then //当执行修改操作时执行

if :new.is_delete != :old.is_delete THEN//判断是不是删除操作 is_delete='0'为正常

if :new.is_delete != '0' then

INSERT INTO STO_STORE_OP_LIST(store_id ,op_code,op_datetime)

VALUES(:new.store_id,'DELETE',systimestamp);

end if;

else//不是删除就是修改了

INSERT INTO STO_STORE_OP_LIST(store_id ,op_code,op_datetime)

VALUES(:new.store_id,'UPDATE',systimestamp);

end if;

when inserting then //当新增的时候执行

INSERT INTO STO_STORE_OP_LIST(store_id ,op_code,op_datetime)

VALUES(:new.store_id,'INSERT',systimestamp);

end case;

END;

触发器2(tr_income_oplist):

当STO_INCOME_SETTING表执行INSERT,UPDATE,DELETE的时候,

执行触发器往STO_INCOMING_OP_LIST里记录一下操作日志

create or replace trigger tr_income_oplist

before  INSERT OR UPDATE OR DELETE  //在操作执行之前触发事件

ON STO_INCOME_SETTING

FOR EACH ROW

BEGIN

CASE

when updating then

INSERT INTO STO_INCOMING_OP_LIST(record_id ,op_code,op_datetime)

VALUES(:new.id,'UPDATE',systimestamp);

when inserting then

INSERT INTO STO_INCOMING_OP_LIST(record_id ,op_code,op_datetime)

VALUES(:new.id,'INSERT',systimestamp);

when deleting then

delete from STO_INCOMING_OP_LIST where record_id= :old.id;

INSERT INTO STO_INCOMING_OP_LIST(record_id ,op_code,op_datetime)

VALUES(:old.id,'DELETE',systimestamp);

END CASE;

END;

此处特别注意:

关键字:

:NEW 和:OLD使用方法和意义,new 只出现在insert和update时,old只出现在update和delete时。

在insert时new表示新插入的行数据,update时new 表示要替换的新数据、

old表示要被更改的原来的数据行,delete时old表示要被删除的数据。

在触发器中不必使用commit。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值