我在 MySql 数据库中创建此触发器时出错:
CREATE TRIGGER AggiornaQuantitaLotto AFTER UPDATE ON Lotti
FOR EACH ROW
BEGIN
DECLARE Differenza INT DEFAULT 0;
IF OLD.Quantita <> NEW.Quantita THEN
SET Differenza = NEW.Quantita - OLD.Quantita;
UPDATE Giacenze
SET Totale = Totale + Differenza,
Disponibile = Disponibile + Differenza
WHERE CodP = NEW.CodP;
END IF;
END;
我哪里出错了?错误消息显示:
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4
第 4 行是“DECLARE ...”
提前致谢
最佳答案
您可能只需要一个分隔符语句(没有其他明显错误):
DELIMITER $$
CREATE TRIGGER AggiornaQuantitaLotto AFTER UPDATE ON Lotti
FOR EACH ROW
BEGIN
DECLARE Differenza INT DEFAULT 0;
IF OLD.Quantita <> NEW.Quantita THEN
SET Differenza = NEW.Quantita - OLD.Quantita;
UPDATE Giacenze
SET Totale = Totale + Differenza,
Disponibile = Disponibile + Differenza
WHERE CodP = NEW.CodP;
END IF;
END;
$$
DELIMITER ;
注意:我很想写这样的逻辑:
BEGIN
UPDATE Giacenze g
SET Totale = Totale + (NEW.Quantita - OLD.Quantita),
Disponibile = Disponibile + (NEW.Quantita - OLD.Quantita)
WHERE g.CodP = NEW.CodP AND NEW.Quantita <> OLD.Quantita
END;
这只是消除了if
。
关于mysql - 在 MySql 中创建触发器时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33068476/