MySQL触发器
去年年底做新功能时考虑使用触发器,来聊聊触发器。
触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。
DELIMITER;;//定义结束符
CREATE TRIGGER `updateData` AFTER UPDATE ON `buyer` FOR EACH ROW begin
set @phone = right(new.phone,11); // 取手机号
set @main_id = (select id from main where u_id = new.u_id); // 从表main取id
set @new_last_trade_time = IF( UNIX_TIMESTAMP(new.last_trade_time) > @old_last_trade_time, UNIX_TIMESTAMP(new.last_trade_time), @old_last_trade_time);
set @add_trade_count = (new.trade_count - old.trade_count);
set @add_trade_amount = (new.trade_amount - old.trade_amount);
// 更新操作
update member set
trade_count=trade_count+@add_trade_count,
trade_amount=trade_amount+@add_trade_amount,
last_trade_time=@new_last_trade_time
where main_id = @main_id and phone = @phone;
end
;;
DELIMITER ;
性能问题:
通过测试,若我每秒钟向数据库中插入700条左右的告警信息,此时若使用触发器,每秒中只会插入数据库中50左右,若不开启触发器,那么700条全部可以插入数据库中。(来自网络)
MySQL触发器
https://blog.puresai.com/2018/04/18/152/