oracle的update insert delete时的触发器

1:建表
CREATE TABLE  t1 (
       
       tid VARCHAR2(20), 
       tname VARCHAR2(20)
       )
 CREATE TABLE logg(
       n_id VARCHAR2(20),
       n_name VARCHAR2(10),
      n_value VARCHAR2(40)
)
CREATE OR REPLACE TRIGGER tri_up_del_inser
BEFORE INSERT OR UPDATE OR DELETE  --insert update delete 触发 
ON t1 
FOR EACH ROW  
DECLARE
n_tid VARCHAR2(20); 
log_id VARCHAR2(20); --日志id (就是t1表的tid)
log_value VARCHAR2(40); --日志的value (就是对tname的u d  i )
log_name VARCHAR2(10); -- 日志的name (INSERT UPDATE DELETE)
BEGIN

     IF inserting THEN
        SELECT 'TID'||lpad(substr(nvl(MAX(tid),'TID000'),4,3)+1,3,0) INTO n_tid FROM t1;
          :NEW.tid := n_tid;  
       log_id :=n_tid;
       log_name :='INSERT';
       log_value := :NEW.tname;
     ELSIF updating THEN
         log_id :=:OLD.tid;
         log_name :='UPDATE';
         log_value := :NEW.tname;
     ELSIF  deleting  THEN
           log_id :=:OLD.tid;
         log_name :='DELETE';
         log_value := :OLD.tname;
     END IF;
     
       INSERT INTO logg  VALUES(log_id,log_name,log_value);
     
END;

 重要知识点:

:new.tid   ---->表示你要新增加的记录的自动编号 

:old.tname ----->表示你要删除时的tname

 

 inserting  updating deleting

 

if inserting   then

elsif  updating then

elsif deleting then

end if;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值