【问题标题】:Error : Insert After Trigger错误:触发后插入
【发布时间】:2016-12-09 00:07:31
【问题描述】:

我在 mysql 中遇到了这个触发器的一些问题。我是触发器,程序,事件等的初学者......所以如果我的错误很容易找到,请原谅。 我的 Mysql Xampp 版本是:4.5.1 提到的触发器是:

DELIMITER //
CREATE TRIGGER actualitzarStock
AFTER INSERT ON detallcompra
FOR EACH ROW
BEGIN
UPDATE producte SET producte.stock = (producte.stock - 
detallcompra.quantitat) 
where producte.idProducte = detallcompra.idProducte
END
DELIMITER //

我收到的错误只是:“错误”。所以,感谢所有试图帮助我的人!

【问题讨论】:

    标签: mysql triggers xampp localhost


    【解决方案1】:

    要引用添加到detallcompra 的新行,您必须使用NEW,而不是表名。

    CREATE TRIGGER actualitzarStock
    AFTER INSERT ON detallcompra
    FOR EACH ROW
        UPDATE producte 
        SET producte.stock = (producte.stock - NEW.quantitat) 
        where producte.idProducte = NEW.idProducte;
    

    【讨论】:

    • 我在 30 秒前看到了通知......以为它可能是一个菜鸟,所以我完成了我的回答。
    • 嗨!是的,我是菜鸟 xD。我已经尝试过您的解决方案 @Barmar,但它不起作用,消息说:#1064 - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的“DELIMITER// CREATE TRIGGER actualitzarStock AFTER INSERT ON detallcompra FOR ”附近使用正确的语法
    • 你是怎么输入这个的?听起来您使用的界面不需要您更改分隔符,因此请去掉 DELIMTER 行。
    • 是的,我现在就这样做了,而且错误还在继续。我正在使用 phpMyadmin。介绍此代码:在 detallcompra 上插入后创建触发器actualitzarStock,每行开始更新producte SET producte.stock = (producte.stock - NEW.quantitat) where producte.idProducte = NEW.idProducte END;错误仍然存​​在:#1064 - 您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在第 8 行的“END”附近使用的正确语法
    • UPDATE 语句末尾需要一个分号
    猜你喜欢
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 2012-03-30
    • 2013-12-06
    • 2021-06-19
    相关资源
    最近更新 更多