【发布时间】:2015-04-11 19:56:07
【问题描述】:
假设我的用户表上有一个名为current_status 的列
我希望该列的更新之间至少有 5 秒的间隔
换句话说,如果代码的一部分应该更新此列,那么在此之后的 5 秒内其他代码都不能更改它。
我知道 100 种在代码上做 tat 的方法,但我想在数据库级别做这主要是因为它的网站很大而且原始程序员不可用!
我正在考虑某种触发器或与时间有关的东西? 就是这样,现在我该如何应用 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
【问题讨论】:
-
我确定我昨天看到了这个问题。反正。创建另一个表,它有一个字段,因此定义为
last_update datetime。将此初始化为过去的某个时间。然后在您的触发器中,检查该字段的值。如果超过 5 秒前,则允许更新,并将该字段的值更新为NOW()。 -
如何检查触发时间是否超过 5 秒?
-
您存储上次插入某些内容的时间并进行检查
-
@pala_thanx ,我知道我在要求语法显然它类似于
TIME_TO_SEC(TIMEDIFF(now(), column ))<5)