Откуда берется newahorrosh.capital_real
при выполнении события?
Поскольку в настоящее время нет оператора ELSE
и нет значения для сравнения, все проверки не пройдены, и ничего не выполняется.
SQL внутри тела события оценивается только во время выполнения , то есть когда происходит событие. При определении события SQL не оценивается и может фиксироваться даже при синтаксических ошибках в коде.
Таким образом, вы никогда не увидите ошибку в phpMyAdmin, даже если содержание вашего мероприятия - полная чушь.
Вам нужно запустить SELECT
, чтобы получить какое-то значение для сравнения в вашем IF
утверждении.
Или вы пишете оператор UPDATE
и используете IF()
или CASE
для динамического вычисления нового значения для каждой строки, например:
DELIMITER |
CREATE EVENT CalculoIntereses
ON SCHEDULE EVERY 24 HOUR
STARTS CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
ENDS CURRENT_TIMESTAMP + INTERVAL 1 YEAR
DO
BEGIN
UPDATE newahorrosh SET interests = interests + (1/36000 * capital_real *
(CASE
WHEN capital_real < 500 THEN 3
WHEN capital_real < 1000 THEN 4
WHEN capital_real < 5000 THEN 5
WHEN capital_real < 15000 THEN 6
ELSE 7
END)
);
END |
DELIMITER;
Кстати: у вас также есть опечатка / пробел в вашем начальном IF
утверждении:
newahorrosh.capital_real> 5001 AND newahorrosh.capital_real <1000
Полагаю, вы хотели написать:
newahorrosh.capital_real> 501 AND newahorrosh.capital_real <1000
Таким образом, даже если ваш код будет работать так, как задумано, он все равно не будет работать для значений между 501 и 1000. Ничего не произойдет со значениями в этом диапазоне.