首頁 >資料庫 >mysql教程 >mysql怎麼建立觸發器

mysql怎麼建立觸發器

清浅
清浅原創
2019-04-28 14:59:176825瀏覽

MySQL建立觸發器首先要建立觸發器中待儲存的表,然後再設定觸發器被啟動的時刻,最後在滿足定義條件時觸發,並執行觸發器中定義的語句集合

mysql怎麼建立觸發器

【推薦課程:#MySQL教學##】

觸發器

觸發器是MySQL的資料庫物件之一,它與程式語言中的函數非常相似,都需要宣告、執行等。但是觸發器的執行不是由程式調用,也不是由手動啟動,而是由事件來觸發、激活從而實現執行。有點類似DOM的事件。

觸發器的建立

建立觸發器的語法如下:

CREATE <触发器名> < BEFORE | AFTER >
<INSERT | UPDATE | DELETE >
ON <表名> FOR EACH Row<触发器主体>

語法解析

觸發器名稱

指觸發器名稱,且在資料庫中是唯一的(如果在某個特定資料庫中建立需要加上資料庫名稱)

 INSERT | UPDATE | DELETE

#表示觸發事件,用於指定啟動觸發器的語句的種類

INSERT:將新行插入表時啟動觸發器

DELETE: 從表格中刪除某一行資料時啟動觸發器

UPDATE:變更表中某一行資料時啟動觸發器

BEFORE | AFTER

觸發器被觸發的時刻,表示觸發器是在啟動它的語句之前或之後觸發。若希望驗證新資料是否符合條件,則使用 BEFORE 選項;若希望在啟動觸發器的語句執行之後完成幾個或更多的改變,則通常使用 AFTER 選項。

表名

與觸發器相關聯的表名,此表必須是永久性表,不能將觸發器與臨時表或檢視關聯起來。在該表上觸發事件發生時才會啟動觸發器。同一個表不能擁有兩個具有相同觸發時刻和事件的觸發器。

觸發器主體

觸發器動作主體,包含觸發器啟動時將要執行的 MySQL 語句。如果要執行多個語句,可使用 BEGIN…END 複合語句結構。

FOR EACH ROW

指向行級觸發,對於受觸發事件影響的每一行都要啟動觸發器的動作。

注意:對同一個表格相同觸發時間的相同觸發事件,只能定義一個觸發器。觸發器只能建立在永久表上,不能對臨時表建立觸發器。

mysql怎麼建立觸發器

範例:建立一個名為double_salary的觸發器

double_salary
   -> AFTER INSERT ON tb_emp1
   -> FOR EACH ROW
   -> INSERT INTO tb_emp2
   -> VALUES (NEW.id,NEW.name,deptId,2*NEW.salary);
Query OK, 0 rows affected (0.25 sec)

上述程式碼的意思是建立了一個double_salary的觸發器,觸發的條件是向資料表tb_emp1中插入資料之後,再向資料表tb_emp2 中插入相同的數據,並且salary 為tb_emp1 中新插入的salary 欄位值的2 倍。

總結:以上就是這篇文章的全部內容了,希望對大家有幫助。

以上是mysql怎麼建立觸發器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn