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;
我正在尝试更新 table 作为触发器被调用,但我在更新语句中遇到语法错误。
触发机构:
set @diff = old.amount -new.amount;
UPDATE decks
SET decktotal = decktotal + @diff
WHERE deckname = old.deckname;
如果需要,我会添加更多信息,但我认为这是我的一个特殊的愚蠢疏忽,很容易纠正。感谢您以任何方式查看!
编辑:
语法错误 1064UPDATE 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;