gpt4 book ai didi

mysql - 防止列的快速更新

转载 作者:行者123 更新时间:2023-11-30 22:46:04 25 4
gpt4 key购买 nike

假设我的用户表中有一列名为 current_status我希望该列的更新间隔至少 5 秒

换句话说,如果代码的一部分应该更新此列,则在此之后的 5 秒内,其他代码应该无法更改它。

我知道 100 种在代码上做的方法,但我想在数据库级别上做,主要是因为它是一个大网站,而原始程序员不可用!

我在考虑某种触发器或随时间变化的东西?在这里,现在我如何对其应用 5 秒规则?

DELIMITER //
CREATE TRIGGER `status_update` BEFORE update ON `users`
FOR EACH ROW IF OLD.current_status != NEW.current_status THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Cannot update record for 5 sec ';
END IF
//
DELIMITER ;

我有一个名为 status_changes 的表来跟踪这些变化,每次状态变化时我都会在这个表中添加一行

status_changes : id , user_id , timestamp , current_status

最佳答案

这不是一个完美的解决方案,但如果您知道自己在做什么,您可以使用类似这样的方法:

CREATE TRIGGER `status_update`
BEFORE update ON `users`
FOR EACH ROW
IF (OLD.current_status != NEW.current_status
AND TIME_TO_SEC(TIMEDIFF(now(), OLD.ts))<5) THEN
BEGIN
SET NEW.current_status=OLD.current_status;
SET NEW.ts=OLD.ts;
END;
END IF;

(或者您可以像示例中那样使用 SIGNAL 阻止错误更新)。

请看 fiddle here .

关于mysql - 防止列的快速更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29577174/

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