您好,欢迎访问一九零五行业门户网

数据同步之各站点同步表触发器创建

在前一个博客中提到了在数据同步的时候,在各站点需要建立各操作表的触发器,在执行增删改的时候,触发器的任务是将其中操作的sql语句拼接成字符串,并保存在表synchro_tb_operate_log中,如果触发器执行出现异常,则将其异常信息保存在另一个表中:synchro_
在前一个博客中提到了在数据同步的时候,在各站点需要建立各操作表的触发器,在执行增删改的时候,触发器的任务是将其中操作的sql语句拼接成字符串,并保存在表synchro_tb_operate_log中,如果触发器执行出现异常,则将其异常信息保存在另一个表中:synchro_data_excep_log,其中
synchro_tb_operate_log字段信息:主键id、拼接的sql语句(其中包含主键id和地区代码)、是否完成同步(默认为0未完成)、创建时间
synchro_data_excep_log字段信息:主键id、触发器异常名称、触发器异常信息、触发器异常出现的时间
下面是创建item_rec代码,也可以让我们来学习一下创建触发器相关的语法和知识:
create or replacetrigger admin.trigger_item_rec after insert or update or delete on item_rec for each row/** head * @name 项目记录表触发器 * @description 变更事件,形成ddl语句插入同步表中 * @version 1.0.0 * @author tang * @create-date 2014-07-01 */declare v_sql nvarchar2(3000); --临时存放sql v_zdcode varchar2(30):='08052'; --站点代码 v_exception varchar2(500);begin v_sql := null; case when inserting then--插入数据 v_sql := 'insert into item_rec('|| 'id,proteamname,py,proid,'|| 'jctype,workflag,zxflag,jwdcode)'|| 'values('''|| :new.id||''','''||replace(:new.proteamname,'''','')||''','''||:new.py||''','''||:new.proid||''','''|| :new.jctype||''','''||:new.workflag||''','''||:new.zxflag||''','''||v_jwdcode||''')'; when updating then--更新数据 v_sql := 'update item_rec set '|| 'proteamname='''||replace(:new.proteamname,'''','')||''''|| ',py='''||:new.py||''''|| ',proid='''||:new.proid||''''|| ',jctype='''||:new.jctype||''''|| ',workflag='''||:new.workflag||''''|| ',zxflag='''||:new.zxflag||''''|| ' where '|| 'id='||:old.id||' and jwdcode='''||v_jwdcode||''''; when deleting then--删除数据 v_sql := 'delete from item_rec t where t.id='||:old.id||' and t.jwdcode='''||v_jwdcode||''''; end case; if v_sql is not null then--如果v_sql不为空,则将相应信息插入到synchro_tb_operate_log表中 insert into synchro_tb_operate_log(sd_record_id,sd_record_sql,sd_flag,create_time) values(seq_synchro_data.nextval,v_sql,0,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')); end if;exception when others then--如果执行过程中出现异常,则将异常信息插入到synchro_data_excep_log表中 v_exception := substr(sqlcode||'---'||sqlerrm, 1, 500); insert into synchro_data_excep_log (id,trigger_name,exception_info,exception_time) values (sys_guid(),'trigger_dict_proteam',v_exception,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'));end trigger_item_rec;
其它类似信息

推荐信息