После запуска триггера в mysql

Я пытаюсь написать триггер в mysql, который запускается после вставки в таблицу. После вставки оно принимает значение из столбца attrValue, где attrType равно 'datetime', и обновляет другой столбец с именем attrMd.

Это моя попытка, но он продолжает говорить, что у меня есть синтаксическое значение в строке 4:

1064 – У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '' по строке 4

Я не могу понять. Буду признателен за любую оказанную помощь. Благодаря…

CREATE TRIGGER upd_check BEFORE INSERT ON def_servpath_0001_weatherstation FOR EACH ROW BEGIN DECLARE someString text; FOR EACH ROW BEGIN IF NEW.atrType = 'datetime' THEN SET @someString := NEW.atrValue; END IF; END; FOR EACH ROW BEGIN IF NEW.atrType <> 'datetime' THEN SET NEW.atrMD = someString; END IF; END; END;// 

редактировать Образ

Некоторые моменты, которые следует учитывать:

  • Не забудьте изменить опцию DELIMITER в phpMyAdmin.
  • Важно указать разницу между 9.4. Пользовательские переменные ( @someString ) и локальные переменные 13.6.4.1 Локальная переменная Синтаксис DECLARE ( someString ) – это разные переменные.
  • В нем есть еще несколько инструкций ( FOR EACH ROW ).
 CREATE TRIGGER upd_check BEFORE INSERT ON def_servpath_0001_weatherstation FOR EACH ROW BEGIN DECLARE someString text; -- FOR EACH ROW BEGIN IF NEW.atrType = 'datetime' THEN SET @someString := NEW.atrValue; END IF; END; -- FOR EACH ROW BEGIN IF NEW.atrType <> 'datetime' THEN SET NEW.atrMD = someString; END IF; END; END;//