我正在尝试更新表,因为调用了触发器,我在更新语句中遇到语法错误。
触发者身体:
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;
答案 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;