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觸發器SQL觸發器
- SQL Server 觸發器SQLServer觸發器
- 建立SQL觸發器SQL觸發器
- SQL Server觸發器SQLServer觸發器
- 【SQL Server】-- 一觸即發之觸發器SQLServer觸發器
- sql-server觸發器SQLServer觸發器
- Sql Server系列:觸發器SQLServer觸發器
- SQL Server:觸發器詳解SQLServer觸發器
- SQL總結(六)觸發器SQL觸發器
- 瞭解SQL Server觸發器及觸發器中的事務AWSQLServer觸發器
- SQL Sever 2000中的前觸發器和後觸發器SQL觸發器
- SQL觸發器例項講解SQL觸發器
- SQL Server 觸發器詳情HOPPSQLServer觸發器
- SQL server觸發器簡單示例SQLServer觸發器
- sql2000觸發器SQL觸發器
- 淺入淺出SQL Server 觸發器SQLServer觸發器
- PL/SQL 07 觸發器 triggerSQL觸發器
- 淺談SQL Server觸發器的使用SQLServer觸發器
- SQL資料庫觸發器例項SQL資料庫觸發器
- 關於SQL SERVER觸發器的理解SQLServer觸發器
- 觸發器中獲取SQL語句觸發器SQL
- SQL Server資料庫級別觸發器SQLServer資料庫觸發器
- SQL Server 觸發器的修改與刪除SQLServer觸發器
- ORACLE 觸發器語法及例項 二Oracle觸發器
- Oracle觸發器觸發級別Oracle觸發器
- MySQL與SQL的觸發器的不同寫法MySql觸發器
- SQL Server 2005系列教學_ 觸發器SQLServer觸發器
- 系統觸發器的應用順序(二)觸發器
- Oracle觸發器6(建立系統事件觸發器)Oracle觸發器事件
- 根據業務寫觸發器(oracle觸發器片)觸發器Oracle
- SQL Server約束和DML觸發器的比較SQLServer觸發器
- SQL Server中類似Oracle中before觸發器SQLServerOracle觸發器
- MySQL觸發器MySql觸發器
- mysql——觸發器MySql觸發器
- mysql 觸發器MySql觸發器
- Mysql觸發器:MySql觸發器
- Oracle觸發器Oracle觸發器
- mysql繞過行觸發器,實現語句觸發器MySql觸發器