mysql觸發器編寫》》》》》一(增)

DELIMITER $

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等於一的時候

end$

DELIMITER ;


DELIMITER 命令(DELIMITER 是定界符,分隔符的意思),它是一條命令,不需要語句結束標識,語法爲:
DELIMITER new_delemiter
new_delemiter 可以設爲1個或多個長度的符號,默認的是分號(;),我們可以把它修改爲其他符號,如$:
DELIMITER $

在這之後的語句,以分號結束,解釋器不會有什麼反應,只有遇到了$,才認爲是語句結束。


觸發器的執行順序

我們建立的數據庫一般都是 InnoDB 數據庫,其上建立的表是事務性表,也就是事務安全的。這時,若SQL語句或觸發器執行失敗,MySQL 會回滾事務,有:

①如果 BEFORE 觸發器執行失敗,SQL 無法正確執行。
②SQL 執行失敗時,AFTER 型觸發器不會觸發。

③AFTER 類型的觸發器執行失敗,SQL 會回滾。

查看觸發器   show TRIGGERS


發佈了60 篇原創文章 · 獲贊 7 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章