#mysql #triggers #phpmyadmin #syntax-error
#mysql #триггеры #phpmyadmin #синтаксическая ошибка
Вопрос:
Я пытался добавить триггер в таблицу в моей базе данных с помощью инструмента добавления триггера phpMyAdmin trigger.
У меня есть две таблицы в одной базе данных: table_A и table_B. Я проверяю, равно ли обновленное значение, возвращаемое триггером, 1. Если это так, я хотел бы обновить значение в table_B. Вот мой код:
SELECT var_a FROM INSERTED
IF var_a = 1 THEN
UPDATE table_B
SET table_B.someVal = table_B.someVal 1;
END IF;
Ошибка:
У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с ‘ЕСЛИ var_a = 1, ТОГДА ОБНОВИТЕ table_B УСТАНОВИТЕ table_B.someVal = table_B.someVal 1; E’ в строке 2
Помощь приветствуется. Это синтаксическая ошибка?
Ответ №1:
Да, это синтаксическая ошибка. Обратите внимание, что MySQL не использует специальную INSERTED
таблицу (это специально для SQL Server.)
Даже если у вас была таблица с именем INSERTED
, это все равно недопустимый синтаксис MySQL для триггера; как минимум, вам нужно было бы закончить оператор SELECT точкой с запятой. Но триггеру не разрешено возвращать результирующий набор, вам нужно будет выполнить ВЫБОР … В, или использовать курсор.
Используйте «НОВЫЕ» и «СТАРЫЕ» ключевые слова для уточнения ссылок на столбцы в обновляемой строке.
Чтобы проверить значение, присвоенное var_a
столбцу, обратитесь NEW.var_a
Например:
IF NEW.var_a = 1 THEN
UPDATE table_B
SET table_B.someCol = tableB.someCol 1;
END IF;
Комментарии:
1. Ах, глупый я. Спасибо за советы, которые помогли!