繁体   English   中英

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

[英]Update trigger MySQL giving syntax error

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

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服务器版本相对应的手册,以找到在第7行的“ END”附近使用正确的语法

这似乎是一个愚蠢的触发器。 为什么要使用子查询来获取最新的更新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 ;

在触发器中使用适当的Delimiter,正确的代码是:

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 ;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM