【发布时间】:2016-03-07 15:13:30
【问题描述】:
您好,我对 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
这似乎有效,但效率不高。任何帮助,将不胜感激。谢谢!
【问题讨论】:
-
要么你有一个运行/重置所有相关标志的作业,要么你安排每个用户的单个作业在他们被阻止后运行一小时。一项工作更容易维护,但会更频繁地运行(取决于您想要解除阻塞的时间接近 1 小时)。例如如果您不关心用户可能会被阻止 1 小时 59 分钟(例如,在上午 9:01 被阻止,下一次解除阻止在上午 10 点运行,这意味着他们仅被阻止了 59 分钟,所以您在上午 11 点解除阻止)。
标签: mysql database-trigger mysql-event