我试图在插入后创建一个触发器,它将更新另一个表。
这是我尝试的代码:
delimiter |
CREATE TRIGGER augmenter_quantite_article AFTER INSERT
ON LigneInterventaire
FOR EACH ROW BEGIN
DECLARE @qte AS INTEGER;
DECLARE @code AS INTEGER;
SELECT @qte = qteInv FROM INSERTED;
SELECT @code = codeArt FROM INSERTED;
UPDATE Article SET qteArt = qteArt + @qte WHERE codeArt = @code;
END;
|
delimiter ;
但我会收到以下错误消息:
1064-您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,了解使用“@qte AS integer”附近的正确语法;声明@code为整数;从INSERTED中选择@QTE=qteInv;%s“位于第4行
试试看
CREATE TRIGGER augmenter_quantite_article
AFTER INSERT ON LigneInterventaire
FOR EACH ROW
UPDATE Article
SET qteArt = qteArt + NEW.qteInv
WHERE codeArt = NEW.codeArt;
这里是SQLFiddle演示。
MySql的触发器实现有些有限。没有SQL Server中的虚拟表inserted
和deleted
本身。相反,您可以分别使用关键字old
和new
访问正在插入或更新的行的旧值和新值。
由于它被归结为只有一个update
语句,您不再需要使用beginend
块。另一个优点-您也不需要更改delimiter
;)