数据同步之各站点同步表触发器创建
2014-09-28 14:58
459 查看
在前一个博客中提到了在数据同步的时候,在各站点需要建立各操作表的触发器,在执行增删改的时候,触发器的任务是将其中操作的sql语句拼接成字符串,并保存在表synchro_tb_operate_log中,如果触发器执行出现异常,则将其异常信息保存在另一个表中:SYNCHRO_DATA_EXCEP_LOG,其中
synchro_tb_operate_log字段信息:主键ID、拼接的sql语句(其中包含主键ID和地区代码)、是否完成同步(默认为0未完成)、创建时间
SYNCHRO_DATA_EXCEP_LOG字段信息:主键ID、触发器异常名称、触发器异常信息、触发器异常出现的时间
下面是创建item_rec代码,也可以让我们来学习一下创建触发器相关的语法和知识:
synchro_tb_operate_log字段信息:主键ID、拼接的sql语句(其中包含主键ID和地区代码)、是否完成同步(默认为0未完成)、创建时间
SYNCHRO_DATA_EXCEP_LOG字段信息:主键ID、触发器异常名称、触发器异常信息、触发器异常出现的时间
下面是创建item_rec代码,也可以让我们来学习一下创建触发器相关的语法和知识:
create or replace TRIGGER "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;
相关文章推荐
- 数据的同步为每个站点创建触发器同步表
- 创建一个触发器(trriger)来同步两个数据库中指定表的数据
- 使用 SQL SERVER 2005 新增功能--- DDL_DATABASE_LEVEL_EVENTS 数据库级的触发器,创建数据库日志表
- 简单的两个表数据同步的触发器
- 两个数据表同步的触发器
- Oracle 11g 通过创建物化视图实现不同数据库间的表数据同步
- Synchronization Services for ADO.NET - 创建一个偶然连接数据库系统。(数据同步系统)
- 触发器在增量同步数据的运用.
- 创建触发器修改刚插入数据
- ORACLE 10G用DB_LINK和触发器同步不同库中表的数据
- sql server之触发器调用C#CLR存储过程实现两个表的数据同步
- 利用触发器实现数据同步
- 数据同步中一表操作的增删改反映到记录数据变化的表datainfo上的触发器写法
- 两个数据表同步的触发器
- Setup Factory 7.0使用总结七:创建数据表、序列、触发器
- 触发器在增量同步数据的运用.
- 两张表数据同步 (添加、删除、修改 触发器)
- mysql 触发器实现两个表的数据同步
- 定时同步sql服务器上的数据:导入数据+创建DTS+调度的办法
- 创建Writable Materialized View在DB之间增量同步数据