觸發器在增量同步資料的運用

2021-06-06 20:59:10 字數 2278 閱讀 2132

觸發器可以記錄對錶的新增,修改,刪除,

這樣可以通過觸發器,記錄一段時間內的表的變動的記錄,把這些記錄存到乙個變動記錄表裡,

資料同步的時候,就可以讀取這張變成的記錄表,只需要同步變動過的記錄,這樣可以大大提高同步的速度.

對原表刪除的操作,可以能新錶做delete操作

對原表進行insert 或update操作,可以執行新建或更新操作.

下面是乙個觸發器(sql server 2000)的例子:

1exists

(select

*from

dbo.sysobjects

where

id =

object_id(n'

[risk].[trg_guarantee_r_in_hg]')

andobjectproperty

(id, n

'istrigger')

=1)2

drop

trigger

[risk].

[trg_guarantee_r_in_hg]3

ifexists

(select

*from

dbo.sysobjects

where

id =

object_id(n'

[risk].[trg_guarantee_r_del_hg]')

andobjectproperty

(id, n

'istrigger')

=1)4

drop

trigger

[risk].

[trg_guarantee_r_del_hg]5

create

trigger

trg_guarantee_r_in_hg

6onguarantee_r

7forinsert

,update

8as9

update

a set

arj_mark='

m',create_time

=getdate

(),using_flag='

0000000000'10

from

log_entry_inc2 a

inner

join

inserted b

ona.entry_id

=b.entry_id

11insert

into

log_entry_inc2(entry_id,arj_mark,create_time,using_flag)

12select

entry_id,'m

',getdate

(),'

0000000000'13

from

inserted

where

entry_id

notin

(select

entry_id

from

log_entry_inc2)

14create

trigger

trg_guarantee_r_del_hg

15onguarantee_r

16fordelete

17as18

update

a set

arj_mark='

d',create_time

=getdate

(),using_flag='

0000000000'19

from

log_entry_inc2 a

inner

join

inserted b

ona.entry_id

=b.entry_id

20insert

into

log_entry_inc2(entry_id,arj_mark,create_time,using_flag)

21select

entry_id,'d

',getdate

(),'

0000000000'22

from

deleted 

where

entry_id

notin

(select

entry_id

from

log_entry_inc2)

另外需要說明的:

觸發器沒有updated,更新時,舊資料是deleted,新資料是inserted

資料庫觸發器的運用

觸發器分為行級觸發和語句觸發。行級觸發每影響一行執行一行。語句觸發執行玩語句後觸發一次,不管這條語句會影響多少行,都只觸發一次。預設是語句觸發。其語法規則為 create or replace trigger after before instand of insert orupdate of co...

觸發器運用例項2

接上以前的觸發器例項,現在面臨了另乙個問題,之前做的觸發器是按照當前年份條數去給他設定後面對應的序號的,但是會有如圖017和018建立好了之後,他把017給刪除了,那麼當前年份的條數就變成了17條,在新建好儲存的時候會提示編號重複,原因也很簡單,當使用年份條數作為計數器的時候,條數和序號可能存在不符...

kettle利用觸發器實現資料同步

2016年8月17日 一 目的 通過觸發器實現資料同步 二 思路 1.在資料庫需要同步的源表中建立乙個insert觸發器,當有新資料插入時,會自動將新插入資料的主鍵記錄到臨時表temp中。當然也可以記錄多個字段 2.比較臨時表temp和源表中的資料,匹配兩個表中的主鍵值是否一致 也可以匹配多個字段 ...