当下要求对数据库中新加入的数据行进行监听,该行中有个字段为状态字段,该字段有三种状态——处理中、成功、失败。新插入的数据行状态默认为“处理中”,如果操作者在十分钟内没有进行相应操作令状态变为“成功”,那么数据库就自动把状态改为“失败”
大概思路是可以通过 触发器(trigger) 配合定时器(event)实现,但具体要怎么操作实在不晓得要怎么做。
如何实现,请高手们给个建议吧,谢谢。俺也是刚接触mysql不久的新手,大家多关照
另外如果实现了,那这样的监听会不会对数据库的性能产生影响,因为如果一秒钟产生10条数据,那么10分钟就会产生6000个定时器。
感觉程序里面加定时器比较好,比如平均一分钟去更新一次数据库中10分钟前数据的状态.如果没有则不更新
能否告知数据库加定时器的坏处是什么
用执行计划试试!
能否给个具体的实现方法
我觉得一个简单的方案的话可以采用cache.新加入数据后,插入一条改新记录ID的cache,改cache过期时间为10分钟。过期回调函数操作状态为失败。处理操作时判断是否存在该cache,存在则删除cache。 这样效率应该会8错
SQL 使用定时作业
如果在SQL Server 里需要定时或者每隔一段时间执行某个存储过程或3200字符以内的SQL语句时,可以用管理->SQL Server代理->作业来实现。
作业JOB 每隔十分钟 执行
UPdate tb
set state='失败'
where state='处理中' and datediff(mi,createdate,getdate())>600
楼主研究下MSSQL 怎么使用作业就好了