資料同步之各站點同步表觸發器建立

2021-12-30 13:04:14 字數 2463 閱讀 2112

在前乙個部落格中提到了在資料同步的時候,在各站點需要建立各操作表的觸發器,在執行增刪改的時候,觸發器的任務是將其中操作的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 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;

資料同步之各站點同步表觸發器建立

在前乙個部落格中提到了在資料同步的時候,在各站點需要建立各操作表的觸發器,在執行增刪改的時候,觸發器的任務是將其中操作的sql語句拼接成字串,並儲存在表synchro tb operate log中,如果觸發器執行出現異常,則將其異常資訊儲存在另乙個表中 synchro data excep log...

MySQL觸發器實現表資料同步

其中old表示tab2 被動觸發 new表示tab1 主動觸發,外部應用程式在此表裡執行insert語句 1 插入 在乙個表裡新增一條記錄,另乙個表也新增一條記錄 drop table if exists tab1 create table tab1 tab1 id varchar 11 drop ...

mysql用觸發器同步表

一 先複製表 create table tytj select from tongji where user 0 and date 2016 09 26 or date 2016 09 27 二 建立插入資料時的 觸發器 在phpmyadmin 執行時記得要修改語句定界符為 create trigg...