Удалить строку после десяти минут неиспользования (срок действия)

Я использую базу данных MySQL в стеке LAMP. У меня есть таблица, в которой я получил несколько простых записей. Предполагается, что эти записи автоматически удаляются через десять минут бездействия. «используется» определяется как вставка, обновление или просто запрос через SELECT (очевидно, удаление не имеет значения). Я хотел бы использовать для этого чистый MySQL, но пока не нашел решения. Поля могут иметь свойство table.time_used, если это необходимо, но еще не имеют его. Хотя создать его не составит труда. Я думал о какой-то комбинации ТРИГГЕРА и ПРОЦЕДУРЫ, но пока не мог ее придумать.

Я знаю, что мог бы использовать стороннее приложение, такое как cron, но я бы предпочел решение MySQL, потому что проект может быть скопирован в другие среды, где cron невозможен.

Я также знаю, что это можно сделать, изменив операторы SELECT, используя таблицу и поле table.expiration_time, которое, вероятно, будет более точным, но мне не нужно, чтобы оно работало на втором, мне просто нужно примерно десять минут и хотел бы сохранить его в чистоте, так как он может работать на очень ограниченных машинах.

Заранее спасибо! :)


person Jannis Jorre    schedule 07.09.2016    source источник


Ответы (1)


Я бы порекомендовал полный доступ через хранимые процедуры, которые затем контролировали бы обновление даты и времени lastUsed.

Нерегламентированный доступ вне хранимых процедур не приводит к принудительному обновлению аспекта lastUsed. Другими словами, это было бы неодобрительно. Его, естественно, можно было бы использовать, но поскольку он не имел бы жесткого контроля, он не соответствовал бы ожиданиям.

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

Автоматическое удаление будет происходить через встроенные события. функциональность в MySQL. У меня есть 3 ссылки, связанные с событиями, со страницы моего профиля. Один из них, с которого стоит начать, находится здесь.

person Drew    schedule 08.09.2016
comment
Если я правильно понимаю, нет возможности удалить версию с чистым MySQL. Следовательно, процедура MySQL, которую вы рекомендовали, вероятно, является лучшим выбором, поскольку доступность cron и т. д. не гарантируется. - person Jannis Jorre; 09.09.2016