首页
/
每日頭條
/
生活
/
mysql觸發器什麼場景下要用
mysql觸發器什麼場景下要用
更新时间:2024-11-10 23:05:48

前言:

觸發器隻是用在特定的場合,一般情況下,我們還是在代碼中處理,因為同一個業務邏輯中,如果代碼和sql中都有業務邏輯,那麼後期維護将很麻煩,所以要根據實際情況來選擇,看是否合适。觸發器就是寫在數據庫中的一個腳本sql,當數據庫某一個字段發生改變的時候,觸發一個或多條sql語句,同時讓多張表的數據同步。比如我們有的表中存放了部門名稱,那麼當我們部門名稱發生改變的時候,我們應該調用觸發器同時去修改存放了“部門名稱”這個冗餘字段。

mysql觸發器什麼場景下要用(MySQL觸發器的作用及弊端)1

什麼是觸發器:

簡單的說,就是一張表發生了某件事(插入、删除、更新操作),然後自動觸發了預先編寫好的若幹條SQL語句的執行.

特點及作用:

特點:觸發事件的操作和觸發器裡的SQL語句是一個事務操作,具有原子性,要麼全部執行,要麼都不執行.

作用:1.安全性。可以基于數據庫的值使用戶具有操作數據庫的某種權利。 2.審計。可以跟蹤用戶對數據庫的操作。 3.實現複雜的非标準的數據庫相關完整性規則。觸發器可以對數據庫中相關的表進行連環更新。觸發器能夠拒絕或回退那些破壞相關完整性的變化,取消試圖進行數據更新的事務。當插入一個與其主健不匹配的外部鍵時,這種觸發器會起作用。 4.同步實時地複制表中的數據。 5.自動計算數據值,如果數據的值達到了一定的要求,則進行特定的處理。

弊端:

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

2.如果需要變動整個數據集而數據集數據量又較大時,觸發器效果會非常低.

3.對于批量操作并不适合使用觸發器 使用觸發器實現的業務邏輯在出現問題時很難進行定位,特别是設計到多個觸發器的情況 協同開發時,寫業務層代碼如果不清楚數據庫 觸發器的細節,容易搞不清到底觸發了那些觸發器 大量使用觸發器會導緻代碼結構容易被打亂,閱讀源碼困難.

觸發器的創建:

CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt

trigger_name:用來表示觸發器的名稱,可以自己設計 trigger_time:标識觸發器的觸發時機,取值是BEFORE或AFTER trigger_event:标識觸發事件,取值為INSERT,UPDATE和DELETE tbl_name:标識建立觸發器的表名,即在哪張表上建立觸發器 trigger_stmt:觸發器程序體,可以是一句SQL語句,或者用 BEGIN 和 END 包含的多條語句。 由此可見,可以建立6種觸發器,即:BEFORE INSERT、BEFORE UPDATE、BEFORE DELETE、AFTER INSERT、AFTER UPDATE、AFTER DELETE。 不能在一個表中建兩個相同類型的觸發器,所以一個表最多隻能建6個觸發器;

mysql觸發器什麼場景下要用(MySQL觸發器的作用及弊端)2

查看觸發器:

SHOW TRIGGERS [FROM schema_name];

這裡的schema_name 就是指定的庫名

删除觸發器:

DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name

觸發器的修改:

觸發器不能修改, 隻能删除以後重新創建.

觸發器的執行順序:

我們建立的數據庫一般都是 InnoDB 數據庫,其上建立的表是事務性表,也就是事務安全的。這時,若SQL語句或觸發器執行失敗,MySQL 會回滾事務,有: ①如果 BEFORE 觸發器執行失敗,SQL 無法正确執行。 ②SQL 執行失敗時,AFTER 型觸發器不會觸發。 ③AFTER 類型的觸發器執行失敗,SQL 會回滾

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
正确洗手分幾步
正确洗手分幾步
正确洗手分幾步?洗手看似簡單,殊不知學問很大而大多數人沒有養成洗手的良好習慣,也不知道如何正确科學地洗手一般人在洗手時,多半隻是簡單快速地搓洗一下手心、手背,就以為已經完成任務要“有效”地洗手,就必須留意下面幾個步驟:,下面我們就來聊聊關于...
2024-11-10
刮痧的好處和壞處
刮痧的好處和壞處
刮痧的好處和壞處?刮痧可以促進代謝,排出毒素,人體每天都在不停地進行着新陳代謝的活動,代謝過程中産生的廢物要及時排洩出去刮痧能夠及時地将體内代謝的“垃圾”刮試到體表,沉積到皮下的毛孔,使體内的血流暢通,恢複自然的代射活力,今天小編就來聊一聊...
2024-11-10
蘋果樹怎麼摘心
蘋果樹怎麼摘心
蘋果樹怎麼摘心?背上枝及徒長枝:生長過旺的背上枝、直立徒長枝以及競争枝,如果不及時控制利用,會成為影響光照的無效枝而夏季摘心後促’世了中短枝的形成,可在一個生長季培養成緊湊的結果枝組,新紅星摘心效果較明顯,對大枝背蔔新俏于半木質化時(15~...
2024-11-10
酸奶為什麼不能拌香蕉
酸奶為什麼不能拌香蕉
酸奶為什麼不能拌香蕉?香蕉和酸奶大多數可以同食,兩者并沒有相克作用,脾胃虛寒患者要避免共同使用,有可能會導緻腸道蠕動加快,引起腹痛腹瀉症狀,下面我們就來說一說關于酸奶為什麼不能拌香蕉?我們一起去了解并探讨一下這個問題吧!酸奶為什麼不能拌香蕉...
2024-11-10
過了一個不一樣的年
過了一個不一樣的年
桑塔納和捷達大衆捷達,是一代人的記憶,也有可能是好多家庭的第一輛車,亦或是好多人駕駛的第一輛車。先回顧一下曆史,國内的捷達就是第二代的捷達A2,一汽大衆于1991年,引入捷達A2,并組裝成功,并命名為捷達。自此中國逐步走入家用轎車時代。19...
2024-11-10
Copyright 2023-2024 - www.tftnews.com All Rights Reserved