觸發器是一種與表操作有關的數據庫對象,當觸發器所在表上出現指定事件時,將調用該對象,即表的操作事件觸發表上的觸發器的執行。
語法
CREATE TRIGGER trigger_nametrigger_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 包含的多條語句。
NEW 與 OLD 詳解
MySQL 中定義了 NEW 和 OLD,用來表示觸發器的所在表中,觸發了觸發器的那一行數據。
new表示新增的數據或者修改後的數據,是可以重新設值;old爲原數據,在update中比較常用.
show triggers;
刪除觸發器
drop trigger if exists trigger_name;
事務性
如果建立的表是事務性表,也就是事務安全的。這時,若SQL語句或觸發器執行失敗,MySQL 會回滾事務.