您好我对MySQL事件和触发器都很陌生,我有一个名为 userstatus 的表(userid,timestamp,count,flag),用于存储有关用户的数据,如果他'被封锁与否当计数达到4时,标志变为0(被阻止)。你可以帮我解决一下我能做些什么来自动将标志保持一小时后自动重置为1。 我尝试了以下代码:
create event testevent
on schedule
every 1 minute
starts CURRENT_TIMESTAMP
do
update demo.userstatus set flag=1
where timestampdiff(hour,timestamp,CURRENT_TIMESTAMP)>1
这似乎有效,但效率不高。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:0)
如果您向usersratus表添加datetime字段,其中包含阻止用户的日期和时间,或者使用存储用户被阻止的现有时间戳字段而不仅仅是标志。
在登录期间或您认为合适的任何活动期间,您只需检查当前时间是否在阻止时间之前或之前(或在时间戳+ 1小时之前或之前)。如果是,则用户被阻止,您可以阻止该活动。如果不是,则不阻止用户并允许该活动。您甚至可以在第一次成功活动时将计数器恢复为1。
这样就可以避免定期检查数据库并清除状态标志。