SqlServer觸發器的使用

2021-07-31 18:21:36 字數 1982 閱讀 8866

首先:說明乙個觸發器使用的場景。

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邏輯表 ...