數據庫——觸發器基礎知識

目錄

1 觸發器的定義

2 創建和執行觸發器

2.1 觸發器中的 new和 old

2.2 創建觸發器

2.3 執行觸發器

3 刪除觸發器

4 查看觸發器

5 觸發器的優點與缺點


1 觸發器的定義

觸發器(trigger)是和表關聯的特殊的存儲過程,當數據庫系統執行insert、update和delete事件時,會激活使其執行相應的操作。

2 創建和執行觸發器

2.1 觸發器中的 new和 old

在MySQL中用oldnew表示觸發器執行前和執行後的數據。

new在before觸發器中賦值、取值,在after觸發器中取值。在after的觸發器中,new的賦值已經結束了,只能讀取內容。


深入瞭解:https://www.cnblogs.com/joyco773/p/5787088.html

2.2 創建觸發器

-- 單個執行語句的觸發器

CREATE trigger 觸發器名 before/after 觸發事件
        ON 表名 FOR EACH ROW 執行語句

-- 多個執行語句的觸發器

CREATE trigger 觸發器名 before/after 觸發事件
        ON 表名 FOR EACH ROW 
        BEGIN
            執行語句
        END

MySQL是按照BEFORE觸發器、行操作、AFTER觸發器的順序執行的

2.3 執行觸發器

例如:test表插入時將新數據trig列設爲insert_trigger

create trigger insert_trigger before insert 

           on test for each row 

           set new.trigger='insert_trigger'; 

 navicat觸發器

 插入數據

 結果

 

3 刪除觸發器

DROP trigger [IF EXISTS] [schema_name.]trigger_name

schema_name是數據庫的名稱,trigger_name是要刪除的觸發器的名稱。

4 查看觸發器

在MySQL中,所有的觸發器的定義都存在於INFORMATION_SCHEMA數據庫的triggers表中,可以通過查詢命令SELECT來查看,具體語法如下:

SHOW trigger [FROM schema_name];


5 觸發器的優點與缺點

優點:

  1. 安全性
    可以基於數據庫的值使用戶具有操作數據庫的某種權利。可以基於時間限制用戶的操作,例如不允許下班後和節假日修改數據庫數據;可以基於數據庫中的數據限制用戶的操作,例如不允許股票的價格的升幅一次超過10%。

  2. 審計
    可以跟蹤用戶對數據庫的操作。   審計用戶操作數據庫的語句;把用戶對數據庫的更新寫入審計表。

  3. 實現複雜的數據完整性規則
    實現非標準的數據完整性檢查和約束。觸發器可產生比規則更爲複雜的限制。與規則不同,觸發器可以引用列或數據庫對象。例如,觸發器可回退任何企圖喫進超過自己保證金的期貨。提供可變的缺省值。

  4. 實現複雜的非標準的數據庫相關完整性規則。
    觸發器可以對數據庫中相關的表進行連環更新。
    在修改或刪除時級聯修改或刪除其它表中的與之匹配的行。
    在修改或刪除時把其它表中的與之匹配的行設成NULL值。
    在修改或刪除時把其它表中的與之匹配的行級聯設成缺省值。
    觸發器能夠拒絕或回退那些破壞相關完整性的變化,取消試圖進行數據更新的事務。

  5. 同步實時地複製表中的數據。

  6. SQL觸發器提供了運行計劃任務的另一種方法。自動計算數據值,如果數據的值達到了一定的要求,則進行特定的處理。例如,如果公司的帳號上的資金低於5萬元則立即給財務人員發送警告數據。

缺點:

增加程序的複雜度,有些業務邏輯在代碼中處理,有些業務邏輯用觸發器處理,會使後期維護變得困難;

 

參考:

https://blog.51cto.com/9291927/2095105  (觸發器應用)

https://www.cnblogs.com/joyco773/p/5787088.html (對數據庫觸發器new和old的理解)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章