创建MySQL触发器时​​不断出现语法错误

时间:2016-01-07 15:34:59

标签: mysql

我正在尝试创建一个触发器,它将在插入记录后触发,我将看到是否有其他类似于此插入记录(相同日期)的记录,如果是,将更新插入记录中的列。一旦我完成了这个,我也将更新它以进行AFTER更新。任何帮助将不胜感激。

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行

1 个答案:

答案 0 :(得分:1)

问题是TOP中没有MySQL。您必须使用LIMIT。此外,如果您未使用mysql客户端,则应删除DELIMITER,因为它不是MySQL的功能。另一件事是,要在MySQL中划分IF语句的结尾,您应该使用END IF而不是ENDIF