嵌套觸發器

定義:

             如果一個觸發器在執行操作時引發了另一個觸發器,而這個觸發器又接着引發下一個觸發器,那麼這些觸發器就是嵌套觸發器。

實例: 

--創建存儲過程:實現在新員工信息表(NewEmployee)中刪除信息時觸發員工信息表(Employee)添加相應新員工信息表中刪除的人員信息

create trigger t_del2

on NewEmployee

for delete

as

insert into Employee(員工編號,員工姓名,所在部門編號,所任職位,性別)

select 員工編號,員工姓名,所在部門編號,所任職位,性別

from  deleted

 

 

--創建存儲過程:實現在員工信息表(Employee)中插入數據時部門信息表(DeptInfo)中的部門人數相應的增加

create trigger t_add

on Employee

for insert

as

update DeptInfo set 部門人數=部門人數+1

where 部門編號=(select 所在部門編號 from inserted)

 

--執行刪除操作:在新員工信息表(NewEmployee)中刪除一個人員

delete from NewEmployee where 員工編號=3

 

--觸發新員工信息表中員工編號爲的記錄被刪除

select * from NewEmployee where 員工編號=3

--觸發人員信息表中增加一條員工編號爲的信息

select * from Employee where 員工編號=3

--觸發部門信息表中相應的部門人數增加

select  部門人數 from DeptInfo where 部門編號='03'

 

注意:

嵌套觸發器如何工作

任何觸發器都可以包含影響另一個表的UPDATE、INSERT或DELETE語句。如果允許嵌套觸發器,修改表的觸發器可以激活第二個觸發器,它又激活第三個觸發器,依次類推。嵌套在安裝時啓用,但可以使用sp_config系統存儲過程禁止和重新啓用嵌套。
觸發器可以嵌套到32級,如果嵌套鏈中的任何觸發器建立無窮循環,超過最大嵌套級的觸發器被終止,並撤銷整個事務。嵌套觸發器可以用於多種功能,比如,建立由前一個觸發器影響的行的備份副本的存儲。使用嵌套觸發器時,應考慮以下因素和指導原則:
缺省情況下,嵌套觸發器配置選項是打開的。
在同一個觸發器事務中,一個嵌套觸發器不能激活兩次。觸發器不調用它自己來響應觸發器中對同一表的第二次更新。例如,如果表中一列上的UPDATE觸發器引起對另一列的更新,修改觸發器只激活一次,而不是重複激活。
由於觸發器是一個事務,在嵌套觸發器中的任何一級中的失敗都會取消整個事務,所有數據修改被撤銷。所以,在測試觸發器時,應該包括一條PRINT語句,這樣,你就可以確定故障發生的位置。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章