MYSQL: создание строки в таблице с датой истечения срока действия - PullRequest
1 голос
/ 13 марта 2019

Здравствуйте, можно ВСТАВИТЬ строку в таблицу с датой истечения срока действия, и когда срок действия истекает, поэтому строки автоматически удаляются? Или я должен создать только один столбец с датой истечения срока действия и при сортировке проверять это значение на игнорирование?

Ответы [ 2 ]

2 голосов
/ 13 марта 2019

Вы не можете сделать это непосредственно в базе данных.Вы можете сделать это, запланировав событие или задание, которое выполняет удаление.Вы можете запланировать событие для каждого удаления.

Я думаю, что лучшим подходом, однако, является использование представления:

create view v_t as
    select t.*
    from t
    where expiration_date > now();

Это гарантирует, что строка не будет доступна в тот момент, когдаСрок годности больше не в будущем.Затем вы можете удалить строки на досуге.Удаление строк может создать нагрузку на базу данных, поэтому вы можете подождать, пока нагрузка не станет меньше.

1 голос
/ 13 марта 2019

Ваша потребность больше похожа на событие, если вы не хотите добавлять столбец с датой истечения срока действия, чем

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:

SET GLOBAL event_scheduler = ON;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...