MySql命令行創建和刪除觸發器
舉例如下:
現有表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 2 3 4 5 6 | CREATE TRIGGER t_afterinsert_on_tab1 AFTER INSERT ON tab1 FOR EACH ROW BEGIN insert into tab2(tab2_id) values (new.tab1_id); END ; |
將上面內容保存爲sql文件執行它,注意前面也要用delimiter來改變語句結束標誌。刪除觸發器:
1 | drop trigger t_afterinsert_on_tab1; |
爲什麼創建觸發器時使用 for each row 這是因爲加上這句則觸發事件就是行級的,那麼對每一行有這個動作都要觸發一次事件