SqlServer学习之触发器
什么是觸發器?
根據百度百科的解釋,觸發器是SqlServer提供給程序員和數據分析員來保證數據完整性的一種方法,它是與表事件相關的特殊的存儲過程,他的執行不是有程序調用,也不是手工啟動,而是由事件來出發,比如當對一個表進行增刪改時就會激活它執行。觸發器經常用于加強數據的文整形越是和業務規則等,觸發器可以從DBA_TRIGGERS,USER_TRIGGERS 數據字典中查找到,Sql3的觸發器是一個能由系統自動執行對數據庫修改的語句。
觸發器與存儲過程唯一的區別就是,觸發器無法通過EXECUTE語句執行,而是在用戶執行Transact_sql語句時自動觸發。
?觸發器的分類:
- DML(數據操縱語言 Data Manipulation Language)觸發器
當數據庫中表的數據發生變化時(Update、Insert、Delete)觸發;主要用來強制執行業務規則,拓展約束,默認值等,因為約束只能約束同一張表的內容,而觸發器則可以執行任意sql命令;
- DDL(數據定義語言 Data?Definition? Language)觸發器
在數據庫結構發生變化時觸發,主要用來記錄數據庫的修改過程,以及限制程序員對數據庫的修改,比如不允許刪除某些指定表等。
- 登陸觸發器
主要響應登陸事件,如果登錄失敗則不觸發登陸觸發器。
觸發器的優點?
1、觸發器可以通過數據庫中的相關表實現級聯更改;通過級聯引用完整性約束可以有效地執行這些更改;
2、可以實現比check越是定義的約束更為復雜的約束;
3、觸發器可以引用其他表中的列;
4、觸發器可以評估數據修改前后的表狀態,并根據其差異采取對策?! ?/p>
?
觸發器的缺點?
1、在進行數據庫導入導出的時候,可能會引起不必要的觸發器邏輯。
?
觸發器的寫法
create trigger trigger_name on {table_name view_name} {for After Instead of } [ insert, update,delete ] as sql_statement
?
SQL Server為每個觸發器都創建了兩個專用表:Inserted表和Deleted表。這兩個表由系統來維護﹐它們存在于內存中而不是在數據庫中。這兩個表的結構總是與被該觸發器作用的表的結構相同。觸發器執行 完成后﹐與該觸發器相關的這兩個表也被刪除。
Deleted表存放由于執行Delete或Update語句而要從表中刪除的所有行。?
Inserted表存放由于執行Insert或Update語句而要向表中插入的所有行。
總結
以上是生活随笔為你收集整理的SqlServer学习之触发器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 27岁 卒:谁打败了IE浏览器?
- 下一篇: NVIDIA新驱动发布:《生化危机2/3