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
指向行級觸發,對於受觸發事件影響的每一行都要啟動觸發器的動作。注意:對同一個表格相同觸發時間的相同觸發事件,只能定義一個觸發器。觸發器只能建立在永久表上,不能對臨時表建立觸發器。
範例:建立一個名為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中文網其他相關文章!