2013-10-01 4 views
0

Я новичок в моем SQL, и я получаю сообщение об ошибкеОшибка при создании триггера в MySQL

# 1064 - У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '@nissue INT DEFAULT 0; набор @nissue:. = (набор ISSUE_ID из кодов где код»в строке 5

для кода

DELIMITER $$ 
CREATE TRIGGER ai_SMS 
    AFTER INSERT ON SMS 
    FOR EACH ROW 
BEGIN 
     DECLARE @nissue INT DEFAULT 0; 
     set @nissue := (set issue_id from Codes where code=NEW.msgbody); 
IF (EXISTS(SELECT * FROM SMS_fltr AS s INNER JOIN Persons AS p ON s.sender=p.mobile_number WHERE [email protected] and s.sender=NEW.sender)) 
     THEN 
       UPDATE SMS_fltr set time=NEW.time ,code=NEW.msgbody where [email protected] and sender=NEW.sender; 

     ELSE 

       INSERT into SMS_fltr (sender,time,code,numissue) VAUES (NEW.sender,NEW.time,NEW.code,nissue); 
     END IF 
END$$ 
DELIMITER ; 

Я пытаюсь создать триггер для таблицы

Может ли тело, пожалуйста, что ошибка, которую я сделал, и что это решение

ответ

0

Предложение # 1: не объявляйте его

DELIMITER $$ 
CREATE TRIGGER ai_SMS 
    AFTER INSERT ON SMS 
    FOR EACH ROW 
BEGIN 
     set @nissue := (set issue_id from Codes where code=NEW.msgbody); 
IF (EXISTS(SELECT * FROM SMS_fltr AS s INNER JOIN Persons AS p ON s.sender=p.mobile_number WHERE [email protected] and s.sender=NEW.sender)) 
     THEN 
       UPDATE SMS_fltr set time=NEW.time ,code=NEW.msgbody where [email protected] and sender=NEW.sender; 

     ELSE 

       INSERT into SMS_fltr (sender,time,code,numissue) VAUES (NEW.sender,NEW.time,NEW.code,nissue); 
     END IF 
END$$ 
DELIMITER ; 

Предложение # 2: Объявить его как обычный переменной

DELIMITER $$ 
CREATE TRIGGER ai_SMS 
    AFTER INSERT ON SMS 
    FOR EACH ROW 
BEGIN 
     DECLARE nissue INT DEFAULT 0; 
     set nissue := (set issue_id from Codes where code=NEW.msgbody); 
IF (EXISTS(SELECT * FROM SMS_fltr AS s INNER JOIN Persons AS p ON s.sender=p.mobile_number WHERE [email protected] and s.sender=NEW.sender)) 
     THEN 
       UPDATE SMS_fltr set time=NEW.time ,code=NEW.msgbody where [email protected] and sender=NEW.sender; 

     ELSE 

       INSERT into SMS_fltr (sender,time,code,numissue) VAUES (NEW.sender,NEW.time,NEW.code,nissue); 
     END IF 
END$$ 
DELIMITER ; 

Дайте ему попробовать !!!

Смежные вопросы