1. 程式人生 > >SQLserver數據庫之觸發器

SQLserver數據庫之觸發器

觸發 刪除 插入 讀取 color code nbsp ger 增刪改

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

SQLserver數據庫之觸發器