SQL觸發器(二)
1、觸發器的 "本質":
觸發器是一種特殊的儲存過程,它不能被顯式地呼叫,而是在往表中插入記錄、更改記錄或者刪除記錄時,當事件發生時,才被自動地啟用。
2、這樣做帶來的 "功能":
觸發器可以用來對錶實施複雜的完整性約束,保持資料的一致性,當觸發器所保護的資料發生改變時,觸發器會自動被啟用,響應同時執行一定的操作(對其它相關表的操作),從而保證對資料的不完整性約束或不正確的修改。觸發器可以查詢其它表,同時也可以執行復雜的T-SQL語句。觸發器和引發觸發器執行的命令被當作一次事務處理,因此就具備了事務的所有特徵。注意: "事務具備什麼特徵?在觸發器中的作用?"如果發現引起觸發器執行的T-SQL語句執行了一個非法操作,比如關於其它表的相關性操作,發現資料丟失或需呼叫的資料不存在,那麼就回滾到該事件執行前的SQL Server資料庫狀態。
3、觸發器的作用:
觸發器可以對資料庫進行級聯修改,這一點剛才已經說過了。需要說明的是: "觸發器和約束的關係和區別"
(1)一般來說,使用約束比使用觸發器效率更高。
(2)同時,觸發器可以完成比CHECK約束更復雜的限制。
說明:
2.1 與CHECK約束不同,在觸發器中可以引用其它的表。
2.2 觸發器可以發現改變前後表中資料的不一致,並根據這些不同來進行相應的操作。
2.3 對於一個表不同的操作(INSERT、UPDATE、DELETE)可以採用不同的觸發器,即使是對相同的語句也可以呼叫不同的觸發器來完成不同的操作。
舉例1:在簽訂一份訂單時,貨物的庫存量應減少。
問?這應用了觸發器的什麼特徵?CHECK約束能解決嗎?
舉例2:正在進行整理的貨物不能下訂單。
問?這應用了觸發器的什麼特徵?CHECK約束能解決嗎?
4、對觸發器3種操作的分析:
在SQL Server為每個觸發器都建立了兩個專用表:inserted表和deleted表。這是兩個邏輯表,由系統來維護,在觸發執行時存在,在觸發結束時消失。這樣有什麼用途?帶著問題看,具體操作步驟和過程:
(1)deleted表存放由於執行delete或update語句而要從表中刪除的所有行。
在執行delete或update操作時,被刪除的行從啟用觸發器的表中被移動(move)到deleted表,這兩個表不會有共同的行。
(2)inserted表存放由於執行insert或update語句而要向表中插入的所有行。
在執行insert或update事物時,新的行同時新增到啟用觸發器的表中和inserted表中,inserted表的內容是啟用觸發器的表中新行的拷貝。
說明:update事務可以看作是先執行一個delete操作,再執行一個insert操作,舊的行首先被移動到deleted表,讓後新行同時新增到啟用觸發器的表中和inserted表中。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-609999/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sql-server觸發器SQLServer觸發器
- SQL Server:觸發器詳解SQLServer觸發器
- SQL Server 觸發器詳情HOPPSQLServer觸發器
- SQL觸發器例項講解SQL觸發器
- 瞭解SQL Server觸發器及觸發器中的事務AWSQLServer觸發器
- 淺入淺出SQL Server 觸發器SQLServer觸發器
- MySQL與SQL的觸發器的不同寫法MySql觸發器
- SQL Server實戰五:儲存過程與觸發器SQLServer儲存過程觸發器
- D觸發器觸發器
- mysql觸發器MySql觸發器
- MySql-觸發器MySql觸發器
- sqlserver 列觸發器SQLServer觸發器
- 除錯觸發器除錯觸發器
- 建立MySQL觸發器MySql觸發器
- SqlServer-觸發器SQLServer觸發器
- logon觸發器for dbaGo觸發器
- MySQL使用觸發器MySql觸發器
- 語句觸發器觸發器
- 手動執行SQL觸發器id自增報錯處理方式SQL觸發器
- 行為和觸發器觸發器
- MySQL觸發器介紹MySql觸發器
- 觸發器 REFERENCING OLD AS OLD觸發器
- Oracle開發基礎-觸發器Oracle觸發器
- mvvm模式 事件觸發器[wpf]MVVM模式事件觸發器
- MySQL入門-- TRIGGER(觸發器)MySql觸發器
- 禁止oracle表的觸發器triggerOracle觸發器
- MSMQ 觸發器 安裝失敗MQ觸發器
- MySQL觸發器的使用規則MySql觸發器
- SqlServer觸發器的建立與使用SQLServer觸發器
- 暫存器,觸發器,三極體小結觸發器
- OGG DDL觸發器引發的故障系列(一)觸發器
- 雲開發 CloudBase 已上線觸發器能力Cloud觸發器
- 25. 使用MySQL之使用觸發器MySql觸發器
- 資料庫檢視,索引,觸發器資料庫索引觸發器
- 資料庫的觸發器的使用資料庫觸發器
- 數位電路中的觸發器觸發器
- [MySQL光速入門]026 觸發器 trigger!!!MySql觸發器
- MySQL全面瓦解17:觸發器相關MySql觸發器
- oracle儲存過程和觸發器Oracle儲存過程觸發器