触发器讲解
觸發器是一種特殊的存儲過程,類似于其它編程語言中的事件函數,SQL Server 允許為 INSERT、UPDATE、DELETE 創建觸發器,當在表(視圖)中插入、更新、刪除記錄時,觸發一個或一系列 T-SQL 語句。
本專題的目的并非是向您詳盡地介紹觸發器,而是系統地向您介紹觸發器的常用知識與相關應用,并與您一起探討應用經驗,如果您需要了解觸發器不常用的知識點,請參見 SQL Server 聯機叢書(安裝 SQL Server 時默認是安裝的)。
?
觸發器到底可不可以在視圖上創建在 SQL Server 聯機叢書中,是沒有說觸發器不能在視圖上創建的, 并且在語法解釋中表明:在 CREATE TRIGGER 的 ON 之后可以是視圖。 然而,事實似乎并不是如此,很多專家也說觸發器不能在視圖上創建。 我也專門作了測試,的確如此,不管是普通視圖還是索引視圖,都無法在上面創建觸發器,真的是這樣嗎?請點擊詳細, 但是無可厚非的是:當在臨時表或系統表上創建觸發器時會遭到拒絕。
深刻理解 FORCREATE TRIGGER 語句的 FOR 關鍵字之后可以跟 INSERT、UPDATE、DELETE 中的一個或多個,也就是說在其它情況下是不會觸發觸發器的, 包括 SELECT、TRUNCATE、WRITETEXT、UPDATETEXT。相關內容
一個有趣的應用我們看到許多注冊系統在注冊后都不能更改用戶名,但這多半是由應用程序決定的, 如果直接打開數據庫表進行更改,同樣可以更改其用戶名, 在觸發器中利用回滾就可以巧妙地實現無法更改用戶名……詳細內容
觸發器內部語句出錯時……這種情況下,前面對數據更改操作將會無效。 舉個例子,在表中插入數據時觸發觸發器,而觸發器內部此時發生了運行時錯誤,那么將返回一個錯誤值,并且拒絕剛才的數據插入。
啟用或禁用觸發器通過在查詢分析器中執行 alter table 可以啟用或禁用表的一個或所有觸發器。詳細內容
不能在觸發器中使用的語句觸發器中可以使用大多數 T-SQL 語句,但如下一些語句是不能在觸發器中使用的。
- CREATE 語句,如:CREATE DATABASE、CREATE TABLE、CREATE INDEX 等。
- ALTER 語句,如:ALTER DATABASE、ALTER TABLE、ALTER INDEX 等。
- DROP 語句,如:DROP DATABASE、DROP TABLE、DROP INDEX 等。
- DISK 語句,如:DISK INIT、DISK RESIZE。
- LOAD 語句,如:LOAD DATABASE、LOAD LOG。
- RESTORE 語句,如:RESTORE DATABASE、RESTORE LOG。
- RECONFIGURE
- 說明:有人說不能用 TRUNCATE TABLE 語句,其實是可以的。
觸發器功能強大,輕松可靠地實現許多復雜的功能,為什么又要慎用呢。 觸發器本身沒有過錯,但由于我們的濫用會造成數據庫及應用程序的維護困難。 在數據庫操作中,我們可以通過關系、觸發器、存儲過程、應用程序等來實現數據操作…… 同時規則、約束、缺省值也是保證數據完整性的重要保障。 如果我們對觸發器過分的依賴,勢必影響數據庫的結構,同時增加了維護的復雜程序……詳細內容
?
文章來自http://www.cftea.com/specials/trigger/
轉載于:https://www.cnblogs.com/ccsbb/archive/2010/05/07/1729948.html
總結
- 上一篇: 创建VLAN的两种方法
- 下一篇: 【转载】关于如何提取Exe文件中PPT源