觸發器可以記錄對錶的新增,修改,刪除,
這樣可以通過觸發器,記錄一段時間內的表的變動的記錄,把這些記錄存到乙個變動記錄表裡,
資料同步的時候,就可以讀取這張變成的記錄表,只需要同步變動過的記錄,這樣可以大大提高同步的速度.
對原表刪除的操作,可以能新錶做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和源表中的資料,匹配兩個表中的主鍵值是否一致 也可以匹配多個字段 ...