#mysql
#mysql
Вопрос:
DELIMETER $$
CREATE EVENT loan_balance ON SCHEDULE EVERY '1' MONTH AND '5' DAYS
DO BEGIN UPDATE users SET loan_balance = total_loans_collected -
total_loans_paid;
END$$
DELIMETER;
Здравствуйте! Я хочу обновлять эту таблицу 5 числа каждого месяца, а не только ежемесячно. ДНИ «И «5» не заставляют это работать.
Комментарии:
1. Зачем вам нужен именно этот код? Вы могли бы просто создать сгенерированный столбец или представление для этого.
2. 5-е число каждого месяца — это дата, когда обычно производятся вычеты.
Ответ №1:
Вам нужна немного другая ON SCHEDULE
фраза.
AT '2018-04-01 03:01' INTERVAL 5 DAY EVERY MONTH
запускает ваше событие в 03:01 по местному времени пятого числа каждого месяца.
03:01
это подходящее время для запланированного задания, потому что оно не портится переключениями на стандартное / дневное время.
Комментарии:
1. Очень близко к тому, что я хочу, но он отображает синтаксическую ошибку почти КАЖДЫЙ МЕСЯЦ. Какие-либо корректировки?
Ответ №2:
Вместо использования триггера для обновления loan_balance
столбца, вы можете превратить его в сгенерированный столбец.
ALTER TABLE users MODIFY COLUMN loan_balance INT GENERATED ALWAYS AS
(total_loans_collected - total_loans_paid) STORED;
Если я чего-то не упускаю, я считаю, что это наиболее оптимальный подход, и его, безусловно, проще поддерживать.