首頁 > php教程 > PHP开发 > 詳解SQL中的觸發器

詳解SQL中的觸發器

高洛峰
發布: 2016-12-14 16:14:46
原創
1367 人瀏覽過

觸發器

        觸發器簡介:

          觸發器(trigger)是個特殊的儲存過程,它的執行不是由程式調用,也不是手動啟動,而是由事件來觸發 對一個特殊的儲存程序,當一個執行表,delete, update)時就會啟動它執行,觸發器經常用於加強資料的完整性約束和業務規則等。在我看來觸發器實際上就是一個事件,就像C#中,點擊一個按鈕會觸發對應的操作。

        觸發器的分類:

        (1)DML( 資料操縱語言 Data Manipulation Language)觸發器:是指觸發器在資料庫中發生DML事件時將啟用DML事件時將啟用。 DML事件即指在資料表或檢視中修改資料的insert、update、delete語句。
        (2)DDL(資料定義語言Data Definition Language)觸發器:是指當伺服器或資料庫中發生(DDL事件時將啟用。DDL事件即指在表或索引中的create、alter、drop語句也。
語句也。 (3)登陸觸發器:是指當使用者登入SQL SERVER實例建立會話時觸發。 )AFTER觸發器:它是在執行INSERT、UPDATE、DELETE語句操作之後執行觸發器操作。 ,不過不能對視圖定義AFTER觸發器。的。 DELETED和INSERED表的結構和觸發器所在的資料表的結構是一樣的。 ,更新的記錄。的表中有三條數據,那麼他也有三個數據。的優缺點:

        觸發器可透過資料庫中的相關表實現級聯更改,可強制比使用CHECK約束定義的約束更為複雜的約束。例如觸發器可以使用另一個表中的SELECT 比較插入或更新的數據,以及執行其它操作。 INSERT、UPDATE 或DELETE)允許採取多個不同的對策以回應同一個修改語句。

        同時,雖然觸發器功能強大,輕鬆可靠地實現許多複雜的功能,為什麼又要慎用?過多觸發器會造成資料庫及應用程式的維護困難,同時對觸發器過度的依賴,勢必影響資料庫的結構,同時增加了維護的複雜程式。



語法

        建立觸發器

CREATE TRIGGER 触发器名称  
ON 表名  
{ FOR | AFTER | INSTEAD OF }   
{ [ INSERT ] [ , ] [ DELETE ] [ , ]   
   [UPDATE ] }  
AS   
  SQL 语句 [ ... n ]
登入後複製

 刪除觸發器:

DROP TRIGGER 触发器名 [ , ... n ]
登入後複製

   修改觸發reee

範例


    在S表創建UPDATE觸發器:

ALTER TRIGGER 触发器名称  
ON 表名  
{ FOR | AFTER | INSTEAD OF }   
{ [ INSERT ] [ , ] [ DELETE ] [ , ]   
   [UPDATE ] }  
AS   
  SQL 语句 [ ... n ]
登入後複製

    禁止刪除SC表中成績不及格學生的記錄:

disable trigger trigDB on database --禁用触发器  
enable trigger trigDB on database --开启触发器
登入後複製

   禁止將SC表中不及格學生的成績改為及格:

print '删除了触发器***'   
raiserror('数据一致性验证',16,1)  
rollback transaction
登入後複製

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板