在mysql中创建一个触发器

时间:2013-06-03 19:45:19

标签: mysql triggers

我正在尝试在插入后在桌面上创建一个触发器,它将更新另一个表。

这是我尝试过的代码:

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附近; DECLARE @code AS INTEGER; SELECT @qte = qteInv   来自插入; S'在第4行

1 个答案:

答案 0 :(得分:1)

尝试

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中没有虚拟表inserteddeleted本身。相反,您可以分别使用关键字OLDNEW来访问正在插入或更新的行的旧值和新值。

由于它只归结为一个UPDATE语句,因此您不再需要使用BEGIN END阻止。另一个好处 - 你不需要改变DELIMITER;)