SQL 使用变量更新触发器时出现语法错误

SQL syntax error on update in trigger using variable

我正在尝试更新 table 作为触发器被调用,但我在更新语句中遇到语法错误。

触发机构:

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;

我假设您遇到的问题出在 where 子句中 你使用:

WHERE deckname = old.deckname;

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

解决方案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;