MySQL触发器的使用

制作一个后台程序时,需要获得mysql数据库中某些指定表的最后一个数据的编辑时间,由于来自于前端的请求可能很频繁,因此写了个定时器,定时获取数据存到内存,请求时直接返回内存数据,在对实时性要求不高的情况下没有问题。然而,由于涉及到近10张表,每次轮询感觉费时费力,因此就使用了mysql的触发器来进行优化,具体思路就是在涉及到的近10张表中每张表建立触发器,每次insert或update后就酱本表的最晚编辑时间更新到一张新建的专门用来存储最近编辑时间的表,这样后台轮询只需要使用一次select语句,理论上性能提升了近10倍。

触发器的建立网上有很多资料,我记录一下我踩的坑
- 拥有触发器的数据器不可直接改名
一旦数据库中用了触发器,这个触发器的改名就只能通过备份-新建目标名称数据库-再还原的方式了

- 使用”delimiter $”的限制
Qt中,QSqlQuery::exec所执行的语句与mysql命令行所能执行的语句是不一样的,前者被包含于后者,这导致的一个问题就是诸如”delimiter $”重新定义mysql语句结束符的语句QSqlQuery::exec不认识,因此如果想要在Qt代码中完成数据库更改,只能将Begin-End之间的语句压缩到一行