2016-01-07 4 views
-1

Я пытаюсь создать триггер, который будет запускать ПОСЛЕ Вставки записи, где я увижу, есть ли другие записи, похожие на эту вставную запись (Same Date), и если это так будет обновлено столбец во вставленной записи. Как только я завершу этот, я также обновлю его и для AFTER Update. Любая помощь будет очень оценена.Продолжайте получать синтаксическую ошибку при создании MySQL Trigger

CREATE 
TRIGGER `INSERT_POSTDATEINDEX` AFTER INSERT 
ON `zoomloca_listings-dev`.`listings_posts` 
FOR EACH ROW 
BEGIN 
    DECLARE vNewPostDateIndex INT; 
    DECLARE vLastPostDateIndex INT DEFAULT '0'; 

    SET vNewPostDateIndex = '0'; 
    SET vLastPostDateIndex = (SELECT POSTDATEINDEX FROM listings_posts WHERE date(POST_DATE) = date(NEW.POST_DATE) ORDER BY POSTDATEINDEX DESC LIMIT 1); 

IF vLastPostDateIndex = '0' THEN 
    SET vNewPostDateIndex = '0'; 
ELSE 
    SET vNewPostDateIndex = vLastPostDateIndex + 1; 
END IF; 

Update `listings_posts` SET POSTDATEINDEX = vNewPostDateIndex where ID = New.ID; 

END 

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

+0

Какое сообщение об ошибке? – mic4ael

+0

выглядит как MsSQL. SET vLastPostDateIndex = SELECT TOP 1 POSTDATEINDEX FROM listings_posts WHERE date (POST_DATE) = дата (NEW.POST_DATE) ORDER BY POSTDATEINDEX DESC; –

+0

Какова точная синтаксическая ошибка, которую вы получаете? – mic4ael

ответ

1

Проблема в том, что в не существует TOP. Вместо этого вы должны использовать LIMIT. Кроме того, если вы не используете клиента mysql, тогда вы должны удалить DELIMITER, так как это не функция MySQL. Другое дело, что для демаркации конца инструкции IF в MySQL вы должны использовать END IF вместо ENDIF.

+0

Это для MSSQL. Я использую MySQL. –

+1

Вот что он сказал: TOP для MSSQL, и если вы используете MySQL, вы не следует использовать. Используйте LIMIT. – Nanne

+0

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

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