SQLserver數據庫之觸發器
阿新 • • 發佈:2018-07-24
觸發 刪除 插入 讀取 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數據庫之觸發器