CREATE trigger t1 創建觸發器 名稱爲 t1
after
insert
在 INSERT 型觸發器中,NEW 用來表示將要(BEFORE)或已經(AFTER)插入的新數據;個人理解after insert爲在insert之後
在 UPDATE 型觸發器中,OLD 用來表示將要或已經被修改的原數據,NEW 用來表示將要或已經修改爲的新數據;
在 DELETE 型觸發器中,OLD 用來表示將要或已經被刪除的原數據;
on
ord 表名
意思是在ord(訂單表)數據有添加之後
for each row
begin update goods set num=num-2 where gid=1;
開始修改goods表中的數據當gid等於一的時候
DELIMITER ;
DELIMITER 命令(DELIMITER 是定界符,分隔符的意思),它是一條命令,不需要語句結束標識,語法爲:
DELIMITER new_delemiter
new_delemiter 可以設爲1個或多個長度的符號,默認的是分號(;),我們可以把它修改爲其他符號,如$:
DELIMITER $
在這之後的語句,以分號結束,解釋器不會有什麼反應,只有遇到了$,才認爲是語句結束。
觸發器的執行順序
我們建立的數據庫一般都是 InnoDB 數據庫,其上建立的表是事務性表,也就是事務安全的。這時,若SQL語句或觸發器執行失敗,MySQL 會回滾事務,有:
①如果 BEFORE 觸發器執行失敗,SQL 無法正確執行。
②SQL 執行失敗時,AFTER 型觸發器不會觸發。
③AFTER 類型的觸發器執行失敗,SQL 會回滾。
查看觸發器 show TRIGGERS