语法临时表

时间:2018-12-15 11:28:34

标签: sql sql-server temp-tables

我正在尝试在触发器中创建一个临时表,但是我收到“附近的语法错误,我不明白为什么!这个临时表应保存balanceID的插入具有现有ID的新WRISTBAND的参与者和腕带的IDPARTICIPANT值,然后使用值更新插入的BALANCE的{​​{1}}在临时。

代码:

WRISTBAND

我在做什么错?你能帮助我吗? 谢谢!

2 个答案:

答案 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;
);