Объявите переменные для триггера обновления - PullRequest
0 голосов
/ 05 октября 2019

Я использую графический интерфейс триггера sequelpro и могу добавить триггер обновления без проблем, но как только я пытаюсь ОБЪЯВИТЬ переменную, выдается ошибка ...

Это работает

IF (new.name != "")
AND (old.name IS NULL OR old.name = "")
AND (old.created = old.modified)
THEN
INSERT INTO 
log(location,location_id,target,target_id,message,created) VALUES 
("task",old.id,NULL,NULL,CONCAT("New task 
"",new.name,"" created on ",DATE_FORMAT(new.modified, '%b %e, %Y @ %l:%i%p')),old.modified);
END IF

Если я добавлю переменные

DECLARE myvar VARCHAR;    

IF (new.name != "")
AND (old.name IS NULL OR old.name = "")
AND (old.created = old.modified)
THEN
INSERT INTO 
log(location,location_id,target,target_id,message,created) VALUES 
("task",old.id,NULL,NULL,CONCAT("New task 
"",new.name,"" created on ",DATE_FORMAT(new.modified, '%b %e, %Y @ %l:%i%p')),old.modified);
END IF

throws

MySQL said: You have an error in your SQL syntax; check the manual that corresponds to your MySQL 
server version for the right syntax to use near 'DECLARE myvar VARCHAR;
IF (new.name != "")
AND (old.name IS NULL OR old.name = ' at line 1

Я попытался добавить его через панель запросов, с полным синтаксисом и получить ту же ошибку

delimiter //

CREATE TRIGGER test
AFTER UPDATE
   ON task FOR EACH ROW

BEGIN

DECLARE myvar VARCHAR;

IF (new.name != "")
    AND (old.name IS NULL OR old.name = "")
    AND (old.created = old.modified)
THEN
INSERT INTO 
log(location,location_id,target,target_id,message,created) VALUES 
("task",old.id,NULL,NULL,CONCAT("New task 
"",new.name,"" created on ",DATE_FORMAT(new.modified, '%b %e, %Y @ %l:%i%p')),old.modified);
END IF  

END//

delimiter ;

Мое соединение SequelPro с базой данных AWS RDS.

Спасибо за помощь!

...