MYSQL:在表格中创建具有到期日期的行

时间:2019-03-13 12:14:04

标签: mysql sql

您可能会向表中插入具有到期日期的行,并且何时到达到期日期,以便自动删除行?或者我只需要创建一个带有到期日期的列,并在排序时检查此值是否忽略?

2 个答案:

答案 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;