您可能会向表中插入具有到期日期的行,并且何时到达到期日期,以便自动删除行?或者我只需要创建一个带有到期日期的列,并在排序时检查此值是否忽略?
答案 0 :(得分:2)
您不能直接在数据库中执行此操作。您可以通过安排进行删除的事件或作业来执行此操作。您可以为每次删除安排一个事件。
不过,我认为一种更好的方法是使用视图:
create view v_t as
select t.*
from t
where expiration_date > now();
这确保该行在到期日期不再是将来时不再可用。然后,您可以在闲暇时删除行。删除行可能会对数据库造成负担,因此您可能要等到负担减轻为止。
答案 1 :(得分:1)
您的需求更像是一个活动 如果您不希望添加过期日期列
CREATE EVENT delete_event ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY
ON COMPLETION PRESERVE
DO BEGIN
DELETE FROM Your_table WHERE date>= logic for expiration_date ;
END;
否则
DELIMITER $$
CREATE EVENT Delete ON SCHEDULE EVERY 1 DAY
DO
BEGIN
DELETE FROM TABLE WHERE `date_expires` < CURRENT_TIMESTAMP();
END$$
DELIMITER
;
注意,需要在您的服务器上启用MySQL Event Scheduler:
SET GLOBAL event_scheduler = ON;