gpt4 book ai didi

mysql - MySQL 中的列值在 1 小时后设置为某个值后如何重置?

转载 作者:行者123 更新时间:2023-11-29 21:17:30 26 4
gpt4 key购买 nike

嗨,我对 MySQL 事件和触发器很陌生,我有一个名为 userstatus(用户 ID、时间戳、计数、标志)的表,用于存储有关用户是否被阻止的数据。当计数达到 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

这似乎有效,但效率不高。任何帮助,将不胜感激。谢谢!

最佳答案

如果您向 usersratus 表添加一个日期时间字段(其中包含用户被阻止之前的日期和时间),或者使用存储用户被阻止时间的现有时间戳字段(而不是仅使用一个时间戳),那么效率会高得多。标志。

在登录或您认为适合的任何事件期间,您只需检查当前时间是否等于或早于区 block 时间(或者等于或早于时间戳 + 1 小时)。如果是,则该用户被阻止,您可以阻止该事件。如果不是,则用户不会被阻止并且可以允许该事件。您甚至可以将第一次成功事件时的计数器恢复为 1。

这样您就无需定期检查数据库并清除状态标志。

关于mysql - MySQL 中的列值在 1 小时后设置为某个值后如何重置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35847223/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com