Ошибка запуска обновления phpMyAdmin

#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. Ах, глупый я. Спасибо за советы, которые помогли!