位置: 编程技术 - 正文
推荐整理分享MySQL通过触发器解决数据库中表的行数限制详解及实例,希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!
MySQL通过触发器解决数据库中表的行数限制详解及实例
最近项目一个需求是对操作日志的数量限制为万条,超过十万条便删除最旧的那一条,保存数据库中日志数量不超过万。 当时我的第一想法是通过触发器来做,便在数据库中执行了如下的SQL:
看起来似乎没什么问题,对于insert前执行判断,如果数量超过就执行删除。但在真正数据库超过条,也就是开始执行IF语句的时候就出问题,MySQL报错:
查阅资料才知道,MySQL为了防止触发器递归死循环的执行,不允许在某张表的触发器中直接对该表进行DML(SELECT,DELETE,UPDATE,INSERT)操作,当然可以对其他表进行这样操作。
触发器限制的是执行对该表的DML操作。触发器可以在你的执行前后来修改要执行的这一行数据,通过set关键字。
上述语句表示在insert OpetationLog表的之前,更新insert这条数据的action字段值为test,NEW就表示新添加的这条字段,同样的OLD就表示delete时的字段。而在update的时候NEW以及OLD同时都可以使用。
临时触发器
刚刚谈到的触发器(Triggers)是基于某个表所产生的事件触发的,而临时触发器也称为事件调度器是基于特定时间周期触发来执行某些任务。MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRON或Windows下的任务计划)只能精 确到每分钟执行一次。对于一些对数据实时性要求比较高的应用(例如:股票、赔率、比分等)就非常适合。
在使用这个功能之前必须确保event_scheduler已开启,可执行
或者
要查看当前是否已开启事件调度器,可执行如下SQL:
或
或
而对于本文一开始提到的问题,使用这种机制则可完美解决:
亲测有效
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
deepin 系统下安装mysql数据库的方法步骤 Deepin下载及安装Deepin的下载及安装大家可以参考下面这两篇文章,一篇为正式版的下载与安装,另外一篇文章给大家分享了deepin用U盘安装的方
mysql 搜寻附近N公里内数据的简单实例 根据圆周率和地球半径系数以及搜寻点的经纬度,搜寻数据表中与搜寻点之间的距离为N公里内的数据。1、创建测试表CREATETABLE`location`(`id`int()unsignedNOTN
mysql 查看当前使用的配置文件my.cnf的方法(推荐) my.cnf是mysql启动时加载的配置文件,一般会放在mysql的安装目录中,用户也可以放在其他目录加载。安装mysql后,系统中会有多个my.cnf文件,有些是用于
标签: MySQL通过触发器解决数据库中表的行数限制详解及实例
本文链接地址:https://www.jiuchutong.com/biancheng/349686.html 转载请保留说明!上一篇:浅谈mysql explain中key_len的计算方法
下一篇:deepin 2014系统下安装mysql数据库的方法步骤
友情链接: 武汉网站建设