天天看點

SQL server資料庫之觸發器SQL server資料庫之觸發器

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) 删除表中存放被删除的舊紀錄