Откуда берется 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. Ничего не случилось бы со значениями в этом диапазоне.
Я не уверен, но я думаю, что необходимо было бы сделать это, заставив программу работать как пользователь, который ограничил полномочия, вопрос, можно ли сделать учетную запись пользователя, которая останавливает такие вещи?
Необходимо будет записать драйвер устройства, который фильтрует трафик на основе исполняемого файла, запрашивающего трафик.
Можно изменить и Vista и политики брандмауэра XP динамично с помощью интерфейса INetFwAuthorizedApplications из Windows Firewall API.
Также посмотрите этот вопрос.
Необходимо будет перенаправить, все (или по крайней мере многие) звонят в API-функции WinSock любой запускающей программы к собственным заменяющим функциям. Это означает входить в память каждой запускающей программы и угонять те функции, который является... интересен... тренируются.:-)
Это могло бы быть действительно указателем, чтобы запустить Вас или по крайней мере предложить, чтобы некоторые более конкретные вопросы спросили.
Вы могли переместиться в сторону (т.е. переименовать), winsock DLL системы, и замените его своим собственным? Ваш должен обеспечить тот же API, но проверить, название процесса входящих запросов... возвращает код ошибки заблокированным приложениям и переводит вызовы из позволенных приложений на реальный DLL.