sql 触发器的常用语句(转)
一﹕ 觸發器是一種特殊的存儲過程﹐它不能被顯式地調用﹐而是在往表中插入記錄﹑更新記錄或者刪除記錄時被自動地激活。所以觸發器可以用來實現對表實施復雜的完整性約`束。
二﹕ SQL Server為每個觸發器都創建了兩個專用表﹕Inserted表和Deleted表。這兩個表。
一﹕ 觸發器是一種特殊的存儲過程﹐它不能被顯式地調用﹐而是在往表中插入記錄﹑更新記錄或者刪除記錄時被自動地激活。所以觸發器可以用來實現對表實施復雜的完整性約`束。
????????
二﹕ SQL Server為每個觸發器都創建了兩個專用表﹕Inserted表和Deleted表。這兩個表由系統來維護﹐它們存在于內存中而不是在數據庫中。這兩個表的結構總是與被該觸發器作用的表的結構相同。觸發器執行 完成后﹐與該觸發器相關的這兩個表也被刪除。
Deleted表存放由于執行Delete或Update語句而要從表中刪除的所有行。
Inserted表存放由于執行Insert或Update語句而要向表中插入的所有行。
三﹕Instead of 和 After觸發器
SQL Server2000提供了兩種觸發器﹕Instead of 和After 觸發器。這兩種觸發器的差別在于他們被激活的同﹕
???????
Instead of觸發器用于替代引起觸發器執行的T-SQL語句。除表之外﹐Instead of 觸發器也可以用于視圖﹐用來擴展視圖可以支持的更新操作。
???????
After觸發器在一個Insert,Update或Deleted語句之后執行﹐進行約束檢查等動作都在After觸發器被激活之前發生。After觸發器只能用于表。
???????
一個表或視圖的每一個修改動作(insert,update和delete)都可以有一個instead of 觸發器﹐一個表的每個修改動作都可以有多個After觸發器。
四﹕觸發器的執行過程
如果一個Insert﹑update或者delete語句違反了約束﹐那幺After觸發器不會執行﹐因為對約束的檢查是在After觸發器被激動之前發生的。所以After觸發器不能超越約束。
??????
Instead of 觸發器可以取代激發它的操作來執行。它在Inserted表和Deleted表剛剛建立﹐其它任何操作還沒有發生時被執行。因為Instead of 觸發器在約束之前執行﹐所以它可以對約束進行一些預處理。
???????
五﹕使用T-SQL語句來創建觸發器
基本語句如下﹕???????
?????????? create trigger trigger_name
?????????? on {table_name | view_name}
?????????? {for | After | Instead of }
?????????? [ insert, update,delete ]
?????????? as
?????????? sql_statement
六﹕刪除觸發器:
基本語句如下﹕
???? drop trigger trigger_name
七:查看數據庫中已有觸發器:
-- 查看數據庫已有觸發器
use jxcSoftware
go
select * from sysobjects where xtype='TR'
-- 查看單個觸發器
exec sp_helptext '觸發器名'
轉載于:https://www.cnblogs.com/joker-xp/p/3154349.html
總結
以上是生活随笔為你收集整理的sql 触发器的常用语句(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三星的高效会议原则
- 下一篇: android jni ndk 视频分享