我正在尝试在触发器中创建一个临时表,但是我收到“附近的语法错误,我不明白为什么!这个临时表应保存balance
,ID
的插入具有现有ID
的新WRISTBAND
的参与者和腕带的IDPARTICIPANT
值,然后使用值更新插入的BALANCE
的{{1}}在临时。
代码:
WRISTBAND
我在做什么错?你能帮助我吗? 谢谢!
答案 0 :(得分:0)
我不一定在INTO #temp_s#
附近看到错误,但是在您的UPDATE
查询中确实看到错误。
子查询中的#temp_s
表以任何方式都不与WRISTBAND
表相关,因此,如果返回多于1行,您可能会在此出现错误(会)。
update WRISTBAND
set BALANCE =
(
select t.BALANCE
from #temp_s t
)
所以,我认为如果看起来像这样会更好:
update w
set BALANCE =
(
select t.BALANCE
from #temp_s t
where t.IDPARTICIPANT = w.IDPARTICIPANT
)
FROM WRISTBAND w
也许就是这样,因为在发出错误消息时,SQL有时会表现得很奇怪。最好张贴完整的消息。
答案 1 :(得分:0)
首先我有一个问题要问您查询是否总是返回1行-
select w.IDPARTICIPANT, w.IDPWRISTBAND, w.BALANCE
from WRISTBAND w, inserted i
where w.IDPARTICIPANT = i.IDPARTICIPANT and w.ACTIVE = 1;
如果返回1行,那么为什么要使用临时表?
update WRISTBAND
set BALANCE =
(
w.BALANCE
from WRISTBAND w, inserted i
where w.IDPARTICIPANT = i.IDPARTICIPANT and w.ACTIVE = 1;
);