12 MySQL觸發器到底是什麼?

2021-10-24 16:58:46 字數 1283 閱讀 1728

mysql 的觸發器和儲存過程一樣,都是嵌入到 mysql 中的一段程式,是 mysql 中管理資料的有力工具。不同的是執行儲存過程要使用 call 語句來呼叫,而觸髮器的執行不需要使用 call 語句來呼叫,也不需要手工啟動,而是通過對資料表的相關操作來觸發、啟用從而實現執行。比如當對 student 表進行操作(insert,delete 或 update)時就會啟用它執行。

觸發器與資料表關係密切,主要用於保護表中的資料。特別是當有多個表具有一定的相互聯絡的時候,觸發器能夠讓不同的表保持資料的一致性。

在 mysql 中,只有執行 insert、update 和 delete 操作時才能啟用觸發器,其它 sql 語句則不會啟用觸發器。

那麼為什麼要使用觸發器呢?比如,在實際開發專案時,我們經常會遇到以下情況:

雖然上述情況實現的業務邏輯不同,但是它們都需要在資料表發生更改時,自動進行一些處理。這時就可以使用觸發器處理。例如,對於第一種情況,可以建立乙個觸發器物件,每當新增一條學生記錄時,就執行一次計算學生總數的操作,這樣就可以保證每次新增一條學生記錄後,學生總數和學生記錄數是一致的。

觸發器的優點如下:

觸發器的缺點如下:

在實際使用中,mysql 所支援的觸發器有三種:insert 觸發器、update 觸發器和 delete 觸發器。

在 insert 語句執行之前或之後響應的觸發器。

使用 insert 觸發器需要注意以下幾點:

在 update 語句執行之前或之後響應的觸發器。

使用 update 觸發器需要注意以下幾點:

注意:當觸發器設計對觸發表自身的更新操作時,只能使用 before 型別的觸發器,after 型別的觸發器將不被允許。

在 delete 語句執行之前或之後響應的觸發器。

使用 delete 觸發器需要注意以下幾點:

總體來說,觸發器使用的過程中,mysql 會按照以下方式來處理錯誤。

對於事務性表,如果觸發程式失敗,以及由此導致的整個語句失敗,那麼該語句所執行的所有更改將回滾;對於非事務性表,則不能執行此類回滾,即使語句失敗,失敗之前所做的任何更改依然有效。

若 before 觸發程式失敗,則 mysql 將不執行相應行上的操作。

若在 before 或 after 觸發程式的執行過程**現錯誤,則將導致呼叫觸發程式的整個語句失敗。

僅當 before 觸發程式和行操作均已被成功執行,mysql 才會執行 after 觸發程式。

什麼是MySql觸發器?作用是什麼?

由於專案經理臨時有事,被安排面試乙個新人,期間聊到了mysql的儲存過程 觸發器等知識,發現他對這一塊的知識比較陌生,由於之前講過儲存過程,現在就講講什麼是觸發器。其實觸發器很好理解,按照字面意思,就是會觸發一系列事件操作的東西。基本概念 觸發器是與表事件相關的特殊儲存過程,它的執行不由程式呼叫,也...

etlgr是什麼伺服器 ETL 到底是什麼?

在商業智慧型bi中,我們會經常聽到乙個詞語叫etl,也看到很多相關的職位,就有etl開發工程師,那麼etl到底是什麼呢?etl 的英文全稱叫做 extraction 抽取,transformation 轉換,loading 載入。抽取就是指將資料從乙個資料來源 或者多個資料來源抽取過來的動作,資料來...

JS中裝飾器到底是什麼?

因主要的技術棧是angular,對於angular採用的裝飾器特別認可,是一種優雅的攔截js的方式。目前decorator仍處於stage 2的階段,不知道能否在es2019 es10 中推出,但乙個提案只要能進入stage 2,就基本會包括在以後的正式標準裡面。有n多文章寫道decorator是e...