#java #mysql
#java #mysql
Вопрос:
У меня есть несколько столбцов datetime в моей базе данных MySQL. Я хочу запускать java-функцию при достижении даты. В худшем случае запуск функции MySQL также может выполнить эту работу. Как создать триггер datetime на основе MySQL, не выполняя задание cron каждую минуту?
Комментарии:
1. Ваша база данных будет / не должна быть способна запускать ваше приложение, поэтому вам придется либо использовать триггер db, либо использовать какой-либо планировщик для запуска функции (он же job или задача) в указанное время.
2. Я бы надеялся избежать ежеминутного cron.
3. Я не думаю, что у вас много вариантов, базы данных пассивны, вам нужно запланированное событие (или задание cron), чтобы делать такого рода вещи.
4. Почему вы не хотите использовать задание / планировщик cron для этого? Для этого они и созданы: отслеживать время до достижения определенной временной метки, а затем запускать какое-либо действие. Эти планировщики, как правило, очень эффективны, и все, что предназначено для запуска в определенное время, использует такой планировщик на некотором уровне.
5. Я хочу обновить значение столбца при достижении datetime, и мне было интересно, есть ли какой-нибудь механизм DB, который может это сделать. Я сделаю это с помощью cron (или даже лучшего планировщика, если вы можете посоветовать мне что-то получше), запуская пакет java, проверяя datetime и внося обновления для всех достигнутых значений datetimes.
Ответ №1:
Даже если триггер не выполнит эту работу, должен быть процесс для проверки (в вашем случае, если дата была достигнута) Как сказал Томас, задание или задача (CRON), которая устанавливает триггер или приложение для выполнения того, что вы хотите, с базой данных.
Комментарии:
1. Я бы надеялся избежать ежеминутного cron.
Ответ №2:
Не идеально делать это в базе данных, но если нет лучшего выбора, вы можете достичь этого, создав событие MySQL, которое является запланированной задачей.
Вам нужно добавить триггер вставки и / или обновления в таблицу базы данных и создать событие на основе значения datetime столбца
Вы можете создать событие таким образом, чтобы оно само удалялось после его выполнения в указанное время.