触发器举例

http://chaoji-liangbin.blog.163.com/blog/static/25239212201091310355611/

 

1。

  CREATE OR REPLACE TRIGGER TRIG_RMTP_STAT_FREQSECT_D
  Before Update or Insert Or Delete on RMTP_STAT_FREQSECT_D
  for each Row
 
DECLARE
  SEQVAL NUMBER;
  CNT    NUMBER;
begin
  SELECT SEQ_MSG_ID.NEXTVAL INTO SEQVAL FROM DUAL;
  SELECT COUNT(*) INTO CNT FROM RMTP_STAT_FREQSECT_D_TEMP WHERE  MSID=:NEW.MSID and STATMONTH=:New.STATMONTH;
    If inserting Then
          IF CNT=0 THEN
          INSERT INTO RMTP_STAT_FREQSECT_D_TEMP (MSID,STATMONTH,FREQOCC1,FREQOCC2,FREQOCC3,FREQOCC4,FREQOCC5,FREQOCC6,FREQOCC7,FREQOCC8,FREQOCC9,FREQOCC10 ,FREQOCC11,NOTE,MSG_ID,MSG_STATUS,MSG_OP)
          VALUES (:NEW.MSID,:NEW.STATMONTH,:NEW.FREQOCC1,:NEW.FREQOCC2,:NEW.FREQOCC3,:NEW.FREQOCC4,:NEW.FREQOCC5,:NEW.FREQOCC6,:NEW.FREQOCC7,:NEW.FREQOCC8,:NEW.FREQOCC9,:NEW.FREQOCC10 ,:NEW.FREQOCC11,:NEW.NOTE,SEQVAL, 'NEW', 'I');
          ELSE
          update RMTP_STAT_FREQSECT_D_TEMP set FREQOCC1=:NEW.FREQOCC1,FREQOCC2=:NEW.FREQOCC2,
  FREQOCC3=:NEW.FREQOCC3,FREQOCC4=:NEW.FREQOCC4,FREQOCC5=:NEW.FREQOCC5,FREQOCC6=:NEW.FREQOCC6, FREQOCC7=:NEW.FREQOCC7,FREQOCC8=:NEW.FREQOCC8,FREQOCC9=:NEW.FREQOCC9,FREQOCC10=:NEW.FREQOCC10,
  FREQOCC11=:NEW.FREQOCC11,NOTE=:NEW.NOTE,MSG_OP='U',MSG_STATUS='NEW' where MSID=:NEW.MSID and STATMONTH=:New.STATMONTH;
          END IF;
    Elsif UPDATING Then
        update RMTP_STAT_FREQSECT_D_TEMP set FREQOCC1=:NEW.FREQOCC1,FREQOCC2=:NEW.FREQOCC2,
  FREQOCC3=:NEW.FREQOCC3,FREQOCC4=:NEW.FREQOCC4,FREQOCC5=:NEW.FREQOCC5,FREQOCC6=:NEW.FREQOCC6, FREQOCC7=:NEW.FREQOCC7,FREQOCC8=:NEW.FREQOCC8,FREQOCC9=:NEW.FREQOCC9,FREQOCC10=:NEW.FREQOCC10,
  FREQOCC11=:NEW.FREQOCC11,NOTE=:NEW.NOTE,MSG_OP='U',MSG_STATUS='NEW' where MSID=:NEW.MSID and STATMONTH=:New.STATMONTH;
    Elsif deleting Then
        update RMTP_STAT_FREQSECT_D_TEMP set FREQOCC1=:OLD.FREQOCC1,FREQOCC2=:OLD.FREQOCC2,
  FREQOCC3=:OLD.FREQOCC3,FREQOCC4=:OLD.FREQOCC4,FREQOCC5=:OLD.FREQOCC5,FREQOCC6=:OLD.FREQOCC6, FREQOCC7=:OLD.FREQOCC7,FREQOCC8=:OLD.FREQOCC8,FREQOCC9=:OLD.FREQOCC9,FREQOCC10=:OLD.FREQOCC10,
  FREQOCC11=:OLD.FREQOCC11,NOTE=:OLD.NOTE,MSG_OP='D',MSG_STATUS='NEW' where MSID=:OLD.MSID and STATMONTH=:OLD.STATMONTH;
    End If;   
end;

 

2。

drop trigger TRIG_RMTP_STAT_FREQSECT_D_TEMP;
  CREATE OR REPLACE TRIGGER TRIG_RMTP_STAT_FREQSECT_D_TEMP  Before Update or Insert on RMTP_STAT_FREQSECT_D_TEMP for each Row

begin
    If inserting Then
       INSERT INTO RMTP_STAT_FREQSECT_D (MSID,STATMONTH,FREQOCC1,FREQOCC2,FREQOCC3,FREQOCC4,FREQOCC5,FREQOCC6,FREQOCC7,FREQOCC8,FREQOCC9,FREQOCC10 ,FREQOCC11,NOTE,ISSUM)
       VALUES (:NEW.MSID,:NEW.STATMONTH,:NEW.FREQOCC1,:NEW.FREQOCC2,:NEW.FREQOCC3,:NEW.FREQOCC4,:NEW.FREQOCC5,:NEW.FREQOCC6,:NEW.FREQOCC7,:NEW.FREQOCC8,:NEW.FREQOCC9,:NEW.FREQOCC10 ,:NEW.FREQOCC11,:NEW.NOTE,:NEW.ISSUM);   
  
    Elsif UPDATING Then
     if :NEW.MSG_OP='D' then
     delete from RMTP_STAT_FREQSECT_D where MSID=:NEW.MSID and STATMONTH=:NEW.STATMONTH ;
     ELSE
       update RMTP_STAT_FREQSECT_D set FREQOCC1=:NEW.FREQOCC1,FREQOCC2=:NEW.FREQOCC2,
  FREQOCC3=:NEW.FREQOCC3,FREQOCC4=:NEW.FREQOCC4,FREQOCC5=:NEW.FREQOCC5,FREQOCC6=:NEW.FREQOCC6,FREQOCC7=:NEW.FREQOCC7,FREQOCC8=:NEW.FREQOCC8,FREQOCC9=:NEW.FREQOCC9,FREQOCC10=:NEW.FREQOCC10,
  FREQOCC11=:NEW.FREQOCC11,NOTE=:NEW.NOTE,ISSUM=:NEW.ISSUM where MSID=:NEW.MSID and STATMONTH=:New.STATMONTH;
     end if;
    End If;   
end;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值