觸發器是一種特殊的存儲過程,它在插入,刪除或修改特定表中的數據時觸發執行,它比數據庫本身標準的功能有更精細和更復雜的數據控制能力。
現有表tab1和tab2
要求觸發器具有下面功能:當對tab1插入一條記錄時則tab2也插入相同的記錄
1 2 3 4 5 6 7 8 | mysql>delimiter // mysql> CREATE TRIGGER t_afterinsert_on_tab1
-> AFTER INSERT ON tab1
-> FOR EACH ROW
-> BEGIN
-> insert into tab2(tab2_id) values (new.tab1_id);
-> END ;
->// |
在執行如下語句,恢復設置
1 | mysql> delimiter ; |
其中delimiter作用: 告訴mysql解釋器,該段命令是否已經結束了,mysql是否可以執行了。默認情況下,delimiter是分號;。在命令行客戶端中,如果有一行命令以分號結束,那麼回車後,mysql將會執行該命令。但有時候,不希望MySQL這麼做。在爲可能輸入較多的語句,且語句中包含有分號。使用delimiter //,這樣只有當//出現之後,mysql解釋器纔會執行這段語句。
刪除觸發器:
1 | drop trigger t_afterinsert_on_tab1; |
爲什麼創建觸發器時使用 for each row 這是因爲加上這句則觸發事件就是行級的,那麼對每一行有這個動作都要觸發一次事件。