Google
 
歡迎閱讀熱點專題
專題簡介

觸發器是一種特殊的存儲過程,類似于其它編程語言中的事件函數,SQL Server 允許為 INSERT、UPDATE、DELETE 創建觸發器,當在表(視圖)中插入、更新、刪除記錄時,觸發一個或一系列 T-SQL 語句。

本專題的目的并非是向您詳盡地介紹觸發器,而是系統地向您介紹觸發器的常用知識與相關應用,并與您一起探討應用經驗,如果您需要了解觸發器不常用的知識點,請參見 SQL Server 聯機叢書(安裝 SQL Server 時默認是安裝的)。

 
核心閱讀
觸發器到底可不可以在視圖上創建

在 SQL Server 聯機叢書中,是沒有說觸發器不能在視圖上創建的, 并且在語法解釋中表明:在 CREATE TRIGGER 的 ON 之后可以是視圖。 然而,事實似乎并不是如此,很多專家也說觸發器不能在視圖上創建。 我也專門作了測試,的確如此,不管是普通視圖還是索引視圖,都無法在上面創建觸發器,真的是這樣嗎?請點擊詳細, 但是無可厚非的是:當在臨時表或系統表上創建觸發器時會遭到拒絕。

深刻理解 FOR

CREATE TRIGGER 語句的 FOR 關鍵字之后可以跟 INSERT、UPDATE、DELETE 中的一個或多個,也就是說在其它情況下是不會觸發觸發器的, 包括 SELECT、TRUNCATE、WRITETEXT、UPDATETEXT。相關內容

一個有趣的應用

我們看到許多注冊系統在注冊后都不能更改用戶名,但這多半是由應用程序決定的, 如果直接打開數據庫表進行更改,同樣可以更改其用戶名, 在觸發器中利用回滾就可以巧妙地實現無法更改用戶名……詳細內容

觸發器中 inserted、deleted 虛擬表

如何獲得觸發器即將插入、更新、刪除的記錄的內容呢?用觸發器中的虛擬表吧……詳細內容

觸發器內部語句出錯時……

這種情況下,前面對數據更改操作將會無效。 舉個例子,在表中插入數據時觸發觸發器,而觸發器內部此時發生了運行時錯誤,那么將返回一個錯誤值,并且拒絕剛才的數據插入。

啟用或禁用觸發器

通過在查詢分析器中執行 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 語句,其實是可以的。
慎用觸發器

觸發器功能強大,輕松可靠地實現許多復雜的功能,為什么又要慎用呢。 觸發器本身沒有過錯,但由于我們的濫用會造成數據庫及應用程序的維護困難。 在數據庫操作中,我們可以通過關系、觸發器、存儲過程、應用程序等來實現數據操作…… 同時規則、約束、缺省值也是保證數據完整性的重要保障。 如果我們對觸發器過分的依賴,勢必影響數據庫的結構,同時增加了維護的復雜程序……詳細內容

 
最新22选5开奖公告