业务需要,要同步两个数据的用户信息,因此用到了触发器。
触发器是数据库表的属性,是一个特殊的存储过程,触发器是个特殊的存储过程,但是触发器不需要CALL语句调用,也不需要手动启动。它由事件触发,事件包括INSERT,UPDATE和DELETE语句,当表中出现这些特定事件时,将激活该对象 。MySQL5.0.2开始支持。
一、创建触发器
语法:
CREATE TRIGGER synchronization_user_insert AFTER INSERT ON user_table
FOR EACH ROW
BEGIN
INSERT INTO b.user2(`id`,`name`)
VALUES(NEW.id,NEW.name);
END
#什么时候触发after或者before;操作事件(触发器类型)包括 insert,update,delete; ON 后面绑定表名
#for each row每一行受影响,影响范围
# b表示不同的数据库库名,同一个数据库可省略。可见触发器是一个全局函数
#NEW表示操作后新的值,OLD表示操作前的值
创建有多个执行语句的触发器:
mysql> DELIMITER || mysql> CREATE TRIGGER trig2 BEFORE DELETE -> ON work FOR EACH ROW -> BEGIN -> INSERT INTO time VALUES(NOW()); -> INSERT INTO time VALUES(NOW()); -> END|| mysql> DELIMITER ;
二、查看触发器
SHOW TRIGGERS;
三、删除触发器
DROP TRIGGER [数据库名称.]触发器名称;
引用大佬的话:
!!尽量少使用触发器。
假设触发器触发每次执行1s,insert table 500条数据,那么就需要触发500次触发器,光是触发器执行的时间就花费了500s,而insert 500条数据一共是1s,那么这个insert的效率就非常低了。因此我们特别需要注意的一点是触发器的begin end;之间的语句的执行效率一定要高,资源消耗要小。
触发器尽量少的使用,因为不管如何,它还是很消耗资源,如果使用的话要谨慎的使用,确定它是非常高效的:触发器是针对每一行的;对增删改非常频繁的表上切记不要使用触发器,因为它会非常消耗资源。
原文:https://www.cnblogs.com/zeussbook/p/10593662.html