我在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

最佳答案

Product语句中的if是什么?毫无疑问,这是因为无法识别而产生语法错误。

我认为您打算使身体变得简单:

    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 ;

09-04 09:13