mysql觸發器平常沒怎麼用到過,這次用到了,感覺特別方便。簡單總結一下用法。
先看一下我寫的這兩個觸發器:
/*更新觸發器*/
DROP TRIGGER IF EXISTS t_update_on_t_tradefee;
CREATE TRIGGER t_update_on_t_tradefee
BEFORE UPDATE ON t_tradefee
FOR EACH ROW
BEGIN
IF (NEW.margin_profit - OLD.margin_profit)!=0
THEN
insert into t_margin_profit(cardno,op_time,price,t_tradeFee_id) values(SUBSTRING(new.cardno,1,3),NOW(),NEW.margin_profit - OLD.margin_profit,NEW.id);
END IF;
END;
/*添加觸發器*/
DROP TRIGGER IF EXISTS t_insert_on_t_tradefee;
CREATE TRIGGER t_insert_on_t_tradefee
AFTER INSERT ON t_tradefee
FOR EACH ROW
BEGIN
IF new.margin_profit!=0 then
insert into t_margin_profit(cardno,op_time,price,t_tradeFee_id) values(SUBSTRING(new.cardno,1,3),NOW(),NEW.margin_profit,NEW.id);
END IF;
END;
需要注意的是:
- if判斷裏面不能有空格,這裏就是
!=0
前後,否則報錯。 - 更新觸發器如果要用到改變前後的值需要使用
before update
而不是after
,NEW.margin_profit - OLD.margin_profit
這裏就是margin_profit列改變後的值-改變前的值。