基於某具體的DML語句的觸發或執行,來執行一個動做mysql
delimiter $ create trigger <trigger> before| after -- 觸發時間 insert| update| delete -- 監視動做 on <table> -- 監視誰 for each row begin insert into <table2>(id, log , time) values ( new.id, 'xxx', now()); -- 觸發動做 end$
1.結束符 將結束符 ';' 置換爲 '$'sql
delimiter $
2.觸發時間code
before | after
before 指的是監視動做發生以前,執行觸發動做 after 指的是監視動做發生以前,執行觸發動做事件
3.new | oldit
-- | insert | update | delete |
---|---|---|---|
old | null | 實際值 | 實際值 |
new | 實際值 | 實際值 | null |
在觸發動做中,須要得到監視表的數據, mysql觸發器中, new、old用來表示監視動做發生以前和以後,監視表的數據table
create trigger <trigger> before insert on <table1> for each row begin select num into table2_num from <table2> where id = new.table2_id if new.column > table2_num then set new.column = table2_num; end if update <table2> set num = new.column where id = new.table2_id; end$
查看已有觸發器: show triggers; 刪除已有觸發器: drop trigger triggerName;
同一張表只能建立一個觸發器date