СОБЫТИЯ на MYSQL не работают на phpmyadmin

Используйте возврат каретки

bw.write("\r\n");
1
задан Funk Forty Niner 16 January 2019 в 15:18
поделиться

1 ответ

Откуда берется 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. Ничего не случилось бы со значениями в этом диапазоне.

0
ответ дан Kaii 16 January 2019 в 15:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: