DELIMITER //
CREATE EVENT UpdateDeviceStatus
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_DATE
DO
BEGIN
UPDATE Devices d
SET d.status = 'EXPIRED'
WHERE EXISTS (
SELECT 1 FROM Drivers dr
WHERE dr.device_id = d.device_id
AND dr.expiration_date < CURRENT_DATE
) AND d.status = 'ACTIVE';
END;
//
DELIMITER ;
UPDATE devices
SET `status` = 'EXP'
WHERE EXISTS
(
SELECT 1
FROM drivers
JOIN device_drivers
ON drivers.id = device_drivers.driver_id AND
device_drivers.device_id = devices.id
WHERE drivers.`expiration date` < now()
);
好的,考虑以下
MySQL
表结构:您需要运行每个驱动程序,查看它是否已过期并正确更新设备。
首先,您需要
EVENTS
在数据库中启用:接下来,您可以创建一个
event
每天运行的程序,检查所有active
设备的expired
驱动程序并进行适当更新:这是您的活动需要执行的查询:
关于事件的创建,您有多种选择,其中列出了一些:
无论哪种情况,您可能希望将其包装
UPDATE
到存储过程中,并且还可能希望围绕此事件的调用包装事务,尤其是在存在更多写入操作的情况下。