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