SQL server資料庫之觸發器
在SQLserver資料庫中觸發器中大緻分為兩種:DDL、DML觸發器,即系統觸發器與表觸發器,系統觸發器是對資料庫對象進行操作的觸發器,表觸發器是對表格的增删改時候所進行的觸發器。在這裡我們就隻說表的觸發器。
表的觸發器也分為兩種,分别為:instead of、after(for);分别在表操作之前與表操作之後進行觸發。而且兩種觸發器都有三個觸發條件:insert、delete、update。基本文法為:
create trigger tgr_name
on table_name
with encrypion -–加密觸發器(一般不用寫)
for--觸發器類型(如:instead of/after/for)
update--觸發類型(如:insert/update/delete)
as
begin
--Transact-SQL
end
觸發器是一種特殊類型的存儲過程,但它不同于存儲過程。觸發器主要是通過事件進行觸發被自動調用執行的。而存儲過程可以通過存儲過程的名稱被調用。觸發器有兩個特殊的表:插入表(instered表)和删除表(deleted表)。這兩張是邏輯表也是虛表。由系統在記憶體中建立者兩張表,不會存儲在資料庫中。而且兩張表的都是隻讀的,隻能讀取資料而不能修改資料。這兩張表的結果總是與被改觸發器應用的表的結構相同。當觸發器完成工作後,這兩張表就會被删除。其中兩張表與觸發條件的關系:
插入表(insered) | 删除表(delete) | |
---|---|---|
插入操作(insert) | 插入表中存放插入的記錄 | |
修改操作(update) | 插入表中存放更新後的記錄 | 删除表中存放更新前的記錄 |
删除操作(delete) | 删除表中存放被删除的舊紀錄 |