首先:說明乙個觸發器使用的場景。
1.伺服器0001上的employee表負責儲存公司所有員工的最新資料,新員工入職、員工更換部門以及員工離職等資訊都存在該表中。
2.由於業務需求,公司新上了乙個oa系統,為了確保系統正常平穩執行且不影響公司其他伺服器,所以oa系統就部署在了0002伺服器上。
3.oa系統需要公司員工的最新資訊,但是遠端連線頻繁調取0001伺服器上的employee表會影響到0001伺服器的執行,而且oa系統需要員工最新的基礎資訊(姓名、工號、部門、在職狀態)以及新增一些自定義的員工資訊,資訊存在empinfo表中。
基於以上場景,考慮使用觸發器來完成。即在0001伺服器上employee表新增觸發器來對0002伺服器上的empinfo表進行更新操作。
步驟1:分析需要建立的觸發器的型別
新員工入職,emoloyee表會新增資料,insert觸發器。
員工更換部門,employee表會更新資料,update觸發器。
員工離職,employee表會刪除資料
(一般不會刪除資料,但是為了下面有關刪除情況的觸發器操作,所以這裡作此假設),delete觸發器。
步驟2:在0001伺服器上建立0002伺服器的遠端連線
因為要對0002伺服器的empinfo表進行增刪改操作,所以需要先建立遠端連線,指令碼如下:
exec sp_addlinkedserver 'server0002', ' ', 'sqloledb ', '192.168.0.1'
exec sp_addlinkedsrvlogin 'server0002', 'false ',null, 'sa', '123456'
步驟3:編寫觸發器指令碼
insert觸發器:
create trigger trigger_sync_userdata_insert
on employee
for insert
asbegin
--對empinfo進行批量插入操作
insert server0002.dbo.empinfo select * from inserted
endgo
update觸發器:
create trigger trigger_sync_userdata_update
on employee
for update
asbegin
--對empinfo進行批量更新操作
update a set
a.dept=b.dept,
a.statues=b.statues
from server0002.dbo.empinfo a
inner join inserted b on a.employeeno= b.employeeno
endgo
delete觸發器:
create trigger trigger_sync_userdata_delete
on employee
for delete
asbegin
--對empinfo進行批量刪除操作
delete from server0002.dbo.empinfo where employeeno in (select employeeno from deleted)
endgo
如上所示:三種觸發器已經建好,當0001伺服器的employee表的資料進行增刪改的時候,對應的0002伺服器的empinfo表的資料也會對應的進行增刪改操作。
備註:
1.插入操作(insert)
inserted表有資料,deleted表無資料
2.更新操作(update)
inserted表有資料(新資料),deleted表有資料(舊資料)
3.刪除操作(delete)
inserted表無資料,deleted表有資料
SQL Server觸發器的使用
1.定義 觸發器 trigger 是sql server 提供給程式設計師和資料分析員來保證資料完整性的一種方法,它是與表事件相關的特殊的儲存過程,它的執行不是由程式呼叫,也不是手工啟動,而是由事件來觸發,比如當對乙個表進行操作 insert,delete,update 時就會啟用它執行。觸發器經常...
SQLServer觸發器的使用
觸發器建立的 create trigger tg projectname ontable1 after update asupdatetable2 set 工程名 b.工程名 from table2 a,inserted b where a.projid b.id 關於觸發器中inserted和de...
Sql Server觸發器的使用
sql serefesqoxsver為每個觸發器都建立了兩個專用表 inserted表和deleted表。這兩個表由系統來維護,它們存在於記憶體中而不是資料庫中。這兩個表的結構總是與被該觸發器作用的表的結構相同,觸發器執行完成後,與該觸發器相關的這兩個表也被刪除。對錶的操作 inserted邏輯表 ...