mysql - 为什么说这个触发器包含sql语法错误?

标签 mysql sql triggers syntax-error

我在mysqlworkbench中编写了一个触发器,该触发器应该在将新行添加到订单表后更新产品库存(我的代码是荷兰语,所以这就是我解释这一点的原因)但是当我尝试时它不起作用应用它 mysqlworkbench 说它的 sql 代码包含错误。

这是触发器:

CREATE DEFINER = CURRENT_USER TRIGGER `winkel`.`bestelregel_AFTER_INSERT` AFTER INSERT ON `bestelregel` FOR EACH ROW
BEGIN
    if Product.productnr = NEW.productnr
     then
        Update Product
        Set Hoeveelheid = (Hoeveelheid - NEW.aantal)
        Where productnr = NEW.productnr;

    end if;
END

最佳答案

if 语句中的 Product 是什么?也就是说,毫无疑问,会生成语法错误,因为它无法识别。

我认为你想让 body 变得简单:

    Update Product p.
        Set Hoeveelheid = (Hoeveelheid - NEW.aantal)
        Where p.productnr = NEW.productnr;

if 无关紧要。

我希望完整版本看起来像这样:

DELIMITER $$

CREATE DEFINER = CURRENT_USER TRIGGER `winkel`.`bestelregel_AFTER_INSERT`
    AFTER INSERT ON `bestelregel` FOR EACH ROW
BEGIN
    UPDATE Product p
        SET Hoeveelheid = (Hoeveelheid - NEW.aantal)
        WHERE p.productnr = NEW.productnr;
END $$

DELIMITER ;

关于mysql - 为什么说这个触发器包含sql语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34729687/

相关文章:

PHP SQL 函数不返回有效的 SQL 数据类型

mysql - SSIS:源有UNICODE数据;我正在使用 MySQL 64 位 ANSI ODBC 驱动程序

mysql - 如何在sql中挑出某些名称

mysql - 也为使用不同时间的非插入值选择时间、总和和按列分组

java - 将 Java 连接到本地 SQL 数据库

java - 通过不在 java 中工作来排序

php - 使用复选框和 AJAX 添加到 mysql

php - 当触发器触发时如何将邮件发送给更新的用户?

MySQL触发器 - 移动内部订单列

mysql 如果更新后全部为空则删除行而不触发