在 mysql 中,new
、old
都是内置的,分别表示一个字段发生变化前、后的值(当然也包括插入操作前后的变化),此处呢,因为我们需要根据 CXY_TS_ORDER_TICKET
表的 get_status
字段来插入记录到 CXY_TS_ORDER_TICKET_STATUS
表,因此呢,new 和 old 都取该字段即可。
mysql
中的触发器呢,大致分为三类:insert
型、update
型、delete
型。
何时触发该操作呢,又分为 after
和 before
型
需求:
1:当一个用户新增时,顺带新增他的附属表。这里有 A 表,跟B 表,新增 A 表 触发 新增 B 表
CREATE TRIGGER `ddd` AFTER INSERT ON `A`
FOR EACH ROW insert into B(m_id) values(new.id);
下图是 navicat for mysql 的添加触发器截图
备注:
触发器的优点
触发器的优点在于,可以使用简单的配置来实现复杂的功能,这些功能如果想要在应用层面去实现往往需要比较多的代码量。
触发器的缺点
触发器有一个显而易见的缺点,尤其是在MySQL中,由于MySQL仅支持行触发模式,假如数据库系统中现在有一条触发器的功能是:当前表有新数据插入时,将数据同时插入另外一张表,此时,如果我们使用INSERT语句一次性向当前表中插入一千条数据(使用类似于INSERT INTO cur_table(id,name) VALUES(1,’周一‘) (2,'周二')....(1000,'周一千')的批量插入语句),由于行触发的缘故,我们设定的插入触发器将会被触发1000次,这将带来严重的性能问题! 因此,在对性能有要求的场景下不要使用触发器,如果一定要使用,务必保证触发器中的语句的开销不会很大,并且不会被频繁触发!
触发器还有一个缺陷,就是会将业务和数据库捆绑在一起,使得系统的耦合度变高,当业务需求有变更时,系统可能变得难以维护。因此,在业务需求不稳定或者维护人员频繁变动的场景下尽量不要使用触发器。
优缺点转载自:https://blog.csdn.net/fujie2017/article/details/84532399