编写Oracle触发器的样板

Oracle触发器

create or replace trigger IMAGTRIG.TR_AU_IMAGE_FILE_INDEX
   after update ON IMAGE_FILE_INDEX
   referencing new as new old as old
   for each row
declare
   v_trigger_user varchar2(50);
   v_trigger_date date;
   v_trigger_name varchar2(30) := 'TR_AU_IMAGE_FILE_INDEX';

   cursor c_switch(cp_switch varchar2) is
      select status
        from IMAGE_TR_SWITCH
       where trigger_name = upper(v_trigger_name)
         and switch_for   = cp_switch;
   v_status         IMAGE_TR_SWITCH.status%type;
   v_sqlcode        varchar2(6);
   v_sqlerrm        varchar2(200);
   v_error_comment  varchar2(300);
   --序列号
   v_seq_no         varchar2(20);
begin
   v_error_comment := 'before get_user';
   --获取用户
   v_trigger_user  :=  pub_sys_package.get_user();
   v_trigger_date  :=  sysdate;

   open c_switch('COL_LOG');
   fetch c_switch into v_status;
   if c_switch%found and v_status='1' then
    select SEQ_IMAGE_INDEX_CHANGE_LOG_ID.nextval into v_seq_no from dual;
          v_error_comment:='column log BAR_CODE';
      if (NVL(:old.BAR_CODE,'~') <> NVL(:new.BAR_CODE,'~')) then
            --记录BAR_CODE变更字段信息
            insert into IMAGE_INDEX_CHANGE_LOG(LOG_ID,CHANGE_TYPE,TABLE_NAME,TABLE_PRIMARY_KEY,TRIGGER_NAME,OPERATE_USER,
            OPERATE_DATE,OTHER_OLD_VALUE,OTHER_NEW_VALUE,REMARK)
             values(v_seq_no,
                    '01',
                    'IMAGE_FILE_INDEX',
                    :new.BAR_CODE,
                    'TR_AU_IMAGE_FILE_INDEX',
                    v_trigger_user,
                    v_trigger_date,
                    'BAR_CODE='||:old.BAR_CODE,
                    'BAR_CODE='||:new.BAR_CODE,
                    'BAR_CODE');
      end if;
--#log_content#
   end if;

   --出错处理
   exception
      when others then
      v_sqlcode      :=sqlcode;
      v_sqlerrm      :=substr(sqlerrm,1,200);
      insert into IMAGE_TR_ERROR_LOG(
            ERROR_NO             --系统错误代码
            ,ERROR_MESSAGE       --系统错误信息
            ,TRIGGER_NAME        --出错的trigger
            ,TRIGGER_USER        --出错的用户
            ,TRIGGER_DATE        --出错的时间
            ,ERROR_COMMENT       --出错详细信息
       )
       values(v_sqlcode
             ,v_sqlerrm
             ,upper(v_trigger_name)
             ,v_trigger_user
             ,v_trigger_date
             ,v_error_comment
       );

end TR_AU_IMAGE_FILE_INDEX;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值