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

时间:2016-01-11 19:40:04

标签: 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

2 个答案:

答案 0 :(得分:0)

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 ;

答案 1 :(得分:0)

你有分隔符问题。你需要

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