我有一个包含以下数据的MySQL表
id INT
time_stamp timestamp
status INT
插入时,time_stamp属性将始终为current_timestamp,一旦当前时间戳超过表中插入值的48小时,我需要将状态更改为0。
我创建了以下触发器:
DELIMITER $$
CREATE TRIGGER new_table_AINS
BEFORE INSERT ON new_table
FOR EACH ROW begin
DECLARE now_value timestamp;
SET @now_value = current_timestamp;
UPDATE new_table SET new.status = 0 where @now_value = new.time_stamp + interval 48 hour;
END$$
但是当我尝试插入一个新行时,我在MySQL中得到错误代码1442
错误代码:1442。无法更新表格' new_table'在存储 函数/触发器,因为它已被调用的语句使用 这个存储的函数/触发器。请帮帮我。
非常感谢!
答案 0 :(得分:1)
在"之前"触发器,您无法重新修改您正在触发的表。但是,我认为你不需要触发器。相反,请使用视图:
create view v_ new_table_AINS as
select . . .,
(case when current_timestamp >= time_stamp + interval 48 hour then 0
else status
end)
from new_table_AINS;
闲暇时,您可以运行一个将旧状态更新为零的作业。