为什么说此触发器包含 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 ;
我在我的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 ;