本文更新於2019-06-23,使用mysql 5.7,作業系統為deepin 15.4。
目錄為了便於描述,此處將建立觸發器的ddl複述一次,其已於「sql」章節描述。
create trigger triggername before|after insert|update|delete
on tablename for each row
statement_list
在statement_list中使用別名old
和new
來引用觸發器中發生變化的舊記錄和新記錄內容。目前觸發器只支援行級觸發,不支援語句級觸發。
觸發器是行觸發的,按照before
觸發器、行操作、after
觸發器的順序執行,任何一步出錯都不會繼續執行餘下操作。如果是事務表,則會整個作為乙個事務回滾。對insert into ... on duplicate key update ...
語句,若有重複主鍵的記錄需進行update
,觸發順序為before insert
、before update
、after update
;若沒有重複主鍵的記錄直接insert
,觸發順序為before insert
、after insert
。
statement_list可以通過儲存過程或函式的out
或inout
引數將資料返回觸發器,但不能呼叫直接returns
的函式。也不能顯式或隱式開始或結束事務,如start transaction
、commit
、rollback
。
delimiter ;;
create trigger trigger_test before update
on t for each row
begin
insert into history(old_id, old_value, new_id, new_value) values (old.id, old.value, new.id, new.value);
end;;
delimiter ;
MySQL學習筆記6(觸發器)
觸發器 trigger 是由事件來觸發某個操作。這些事件包括insert語句 update語句和delete語句。當資料庫系統執行這些事件時,就會啟用觸發器執行相應的操作。1 觸發器的含義和作用 2 如何建立觸發器 3 如何檢視觸發器 4 如何刪除觸發器 語法基本形式為 create trigger...
Mysql學習筆記(十二)觸發器
原文 mysql學習筆記 十二 觸發器 學習內容 1.觸發器 什麼是觸發器?我們什麼時候能夠使用觸發器?觸發器就是用來監聽某個表的變化,當這個表發生變化的時候來觸發某種操作.比若說兩個表是相互關聯的,當我們在對其中乙個 進行操作的同時,另乙個表內的資料也需要進行某種操作,那麼我們就需要建立乙個觸發器...
(八)MySQL學習筆記 觸發器
觸發器有三種 觸發器型別 old的含義 new的含義 insert 型觸發器 無 因為插入前狀態無資料 new 表示將要或者已經新增的資料 update 型觸發器 old 表示修改之前的資料 new 表示將要或已經修改後的資料 delete 型觸發器 old 表示將要或者已經刪除的資料 無 因為刪除...