Можно ли создать хранимую процедуру, которая запускается каждую ночь 11 вечера, проверить таблицу, если какая-либо запись была изменена за последние шесть месяцев. Если какая-то запись изменена за последние шесть месяцев, я должен удалить ее из таблицы. Это должно выполняться автоматически без использования какого-либо внешнего языка.
Авторизованный запрос в mysql
Ответ 1
CREATE EVENT IF NOT EXISTS `my_old_data_cleaner_event`
ON SCHEDULE EVERY 23 DAY_HOUR
COMMENT 'Clean up Service Start at 11:00PM daily!'
DO DELETE FROM my_table WHERE created_date < (NOW() - INTERVAL 1 MONTH);
ИЛИ для хранимой процедуры.
CREATE EVENT IF NOT EXISTS `my_old_data_cleaner_event`
ON SCHEDULE EVERY 23 DAY_HOUR
DO CALL my_sp_cleanup_old_data();
Ответ 2
вы можете достичь с помощью планировщика событий mysql -
http://dev.mysql.com/doc/refman/5.1/en/events.html
подробный блог: http://goo.gl/6Hzjvg
Ответ 3
Создайте событие, подобное ниже
CREATE EVENT e_daily
ON SCHEDULE
EVERY 1 DAY
DO
BEGIN
DELETE FROM tableA WHERE DATE(`yourtimestamp`) <(CURDATE() - INTERVAL 6 MONTHS);
END
Ответ 4
Вы также можете написать script, который обрабатывает ваши данные в Python, Perl, PHP и т.д.
После этого просто установите запись cron с помощью crontab -e
и добавьте следующую строку:
0 23 * * * /path/to/my/script.pl 2>&1 >/dev/null
Если вы не укажете 2>&1 >/dev/null
, вы получите электронную почту с результатами выполнения.