为什么说此触发器包含 sql 语法错误?

Why does it say this trigger contains sql syntax errors?

我在我的sqlworkbench 中写了一个触发器,它应该在订单中添加新行后更新产品库存 table(我的代码是荷兰语,所以这就是我解释这个的原因)但是它不起作用,当我尝试应用它时,我的sqlworkbench 说它的 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是什么?也就是说,毫无疑问,会产生语法错误,因为它无法识别。

我认为您希望正文简单:

    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 ;

您的分隔符有问题。你需要

DELIMITER $$
CREATE ..... TRIGGER ...
BEGIN
END$$
DELIMITER ;