Я пытаюсь написать триггер в mysql, который запускается после вставки в таблицу. После вставки оно принимает значение из столбца attrValue, где attrType равно 'datetime', и обновляет другой столбец с именем attrMd.
Это моя попытка, но он продолжает говорить, что у меня есть синтаксическое значение в строке 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. @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;//