上下文:我的桌子是这样组织的:
可以输入当前时间(默认值),或用户喜欢的时间。结束时间设置为始终距开始时间两小时。
当当前时间超过结束时间字段中的时间时,我需要将状态从活动更改为非活动。
最好的方法是什么?
要在当前时间超过表中的结束时间时自动将状态从“活动”更新为“非活动”,而不依赖于计划任务或 cron 作业,您可以使用数据库触发器。
触发器是与表关联的数据库对象,当特定事件发生时自动执行一组操作,例如插入、更新或删除操作。根据您的情况,您可以创建一个触发器来检查当前时间并相应地更新状态。
DELIMITER //
CREATE TRIGGER update_status_trigger BEFORE INSERT ON your_table
FOR EACH ROW
BEGIN
IF NEW.end <= NOW() THEN
SET NEW.status = 'inactive';
END IF;
END //
DELIMITER ;
注意:根据您的数据库系统,创建触发器的语法可能略有不同。上面提供的示例基于 MySQL 语法。