使用变量

时间:2016-04-28 13:47:30

标签: mysql database triggers sql-update syntax-error

我正在尝试更新表,因为调用了触发器,我在更新语句中遇到语法错误。

触发者身体:

set @diff = old.amount -new.amount;
UPDATE decks
SET decktotal = decktotal + @diff
WHERE deckname = old.deckname;

如果需要,我会添加更多信息,但我认为这是一个特殊的愚蠢疏忽,我很容易纠正。谢谢你们两种方式!

编辑:

语法错误1064错误
UPDATE decks
SET decktotal = decktotal + @diff
FROM old
WHERE deckname = old.deckname;

1 个答案:

答案 0 :(得分:1)

我认为你遇到的问题是在where子句中 你使用:

WHERE deckname = old.deckname;

这个问题是更新中未指定table old。要解决此问题,请创建一个变量并将其分配给where子句中的deckname。 或者在设置之后,您需要添加旧表。

解决方法1:

declare @old_name varchar(20);     //Disregard if you don't need to declare
select @old_name = old.deckname;
SET @diff = old.amount -new.amount;
UPDATE decks
SET decktotal = decktotal + @diff
WHERE deckname = @old_name;

溶液2:

SET @diff = old.amount -new.amount;
UPDATE decks
SET decktotal = decktotal + @diff
FROM old
WHERE deckname = old.deckname;