如何在指定时间内更改SQL中的字段?

问题描述 投票:0回答:1

上下文:我的桌子是这样组织的:

  • id
  • 开始
  • 结束
  • 状态

可以输入当前时间(默认值),或用户喜欢的时间。结束时间设置为始终距开始时间两小时。

当当前时间超过结束时间字段中的时间时,我需要将状态从活动更改为非活动。

最好的方法是什么?

sql mysql datetime
1个回答
0
投票

要在当前时间超过表中的结束时间时自动将状态从“活动”更新为“非活动”,而不依赖于计划任务或 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 语法。

© www.soinside.com 2019 - 2024. All rights reserved.