更新触发器MySQL给出语法错误

时间:2014-05-23 20:43:42

标签: mysql

我想在将行插入其他表时创建触发器以在表上进行更新,但是我收到了语法错误:

CREATE TRIGGER quantity AFTER INSERT ON sale_items
FOR EACH ROW
BEGIN
update products set quantity = quantity -1 where id =(
SELECT product_id
FROM sale_items
ORDER BY id desc
LIMIT 1)
END;

错误:

  

# 1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法   靠近' END'在第7行

2 个答案:

答案 0 :(得分:2)

这似乎是一个愚蠢的触发器。为什么要使用子查询获取最后一次更新ID?它应该通过new

提供
DELIMITER //
CREATE TRIGGER quantity AFTER INSERT ON sale_items
    FOR EACH ROW
    BEGIN
    update products
        set quantity = quantity - 1
        where id = new.product_id
    END//
DELIMITER ;

答案 1 :(得分:1)

在触发器中使用正确的分隔符,正确的代码是:

DELIMITER //
CREATE TRIGGER quantity AFTER INSERT ON sale_items
    FOR EACH ROW
    BEGIN
    update products set quantity = quantity - 1
        where id = new.product_id ;
    END//
DELIMITER ;