Sql server 2008 TSQL使用当前插入的记录选择另一个表中的数据

Sql server 2008 TSQL使用当前插入的记录选择另一个表中的数据,sql-server-2008,tsql,stored-procedures,triggers,scope-identity,Sql Server 2008,Tsql,Stored Procedures,Triggers,Scope Identity,非常新的TSQL 我有下表“tblinit”: 我想更新下面“tblRaw”中的“任务百分比”值 我的计划是使用一个TSQL存储过程,该过程在插入到“tblinit”时由触发器执行。存储过程将数据移动到“tblRaw”(合并或删除并插入)中,然后在过程完成时截断“tblinit”。tblInit仅用于暂存传入数据 我SCOPE\u IDENTITY和@@IDENTIY但没有完全掌握这个概念。范围是否由执行存储过程的触发器定义?在使用SCOPE\u IDENTITY和@@IDENTITY尝试我自己

非常新的TSQL

我有下表“tblinit”:

我想更新下面“tblRaw”中的“任务百分比”值

我的计划是使用一个TSQL存储过程,该过程在插入到“tblinit”时由触发器执行。存储过程将数据移动到“tblRaw”(合并或删除并插入)中,然后在过程完成时截断“tblinit”。tblInit仅用于暂存传入数据

SCOPE\u IDENTITY
@@IDENTIY
但没有完全掌握这个概念。范围是否由执行存储过程的触发器定义?在使用
SCOPE\u IDENTITY
@@IDENTITY
尝试我自己的SELECT语句时,我总是返回一个“NULL”结果。引用的MSDN文章似乎返回与文章示例中指定的数据不相关的主键。显然我读错了什么。我想获取刚刚插入的记录,并在查询中使用它


本质上,如何在插入时自动更新john.smith的新百分比值,或者,如何完全添加新记录?

鉴于您提到的各种概念,我必须承认,我对您的意图有点困惑

如果在update/delete中触发触发器后要从原始表中删除,那么就错了

如果出于性能原因,您只想在另一个表中保留一个运行总数,那么请查看“索引视图”

如果要向一个表中添加某些内容,然后更新另一个表并从原始表中删除,则需要查找一个队列或一个存储过程来对相应的表执行更新。您不需要对触发器和其他东西执行复杂的步骤

不知道身份信息是从哪里来的。你肯定不需要在这里

我认为你让事情变得比需要的更复杂了


我可能错了——请随意解释。

我必须承认,鉴于您提到的各种概念,我对您的意图感到有点困惑

如果在update/delete中触发触发器后要从原始表中删除,那么就错了

如果出于性能原因,您只想在另一个表中保留一个运行总数,那么请查看“索引视图”

如果要向一个表中添加某些内容,然后更新另一个表并从原始表中删除,则需要查找一个队列或一个存储过程来对相应的表执行更新。您不需要对触发器和其他东西执行复杂的步骤

不知道身份信息是从哪里来的。你肯定不需要在这里

我认为你让事情变得比需要的更复杂了

我可能错了——请随意解释

如何在插入时自动更新john.smith的新百分比值

此触发器可用于执行以下操作:

create trigger tblinit_to_tblRaw
on tblinit
for insert
as
begin
    update r
    set r.Task_Percent = i.Task_Percent
    from inserted i
        join tblRaw r on i.UserID = r.UserID -- Join on Account_Num instead?
end
这不考虑新记录(tblRaw中没有现有匹配项)。为此,如果存在(…或
merge
),您可能需要运行

如何在插入时自动更新john.smith的新百分比值

此触发器可用于执行以下操作:

create trigger tblinit_to_tblRaw
on tblinit
for insert
as
begin
    update r
    set r.Task_Percent = i.Task_Percent
    from inserted i
        join tblRaw r on i.UserID = r.UserID -- Join on Account_Num instead?
end

这不考虑新记录(tblRaw中没有现有匹配项)。为此,如果存在,您可能需要运行
(…
merge

我想你可能是对的!我使用的是SharePoint中web服务的INSERT语句…也许我应该研究merge语句而不是INSERT并转储中间表?我想你可能是对的!我使用的是SharePoint中web服务的INSERT语句…也许我应该investigate一个MERGE语句而不是INSERT并转储中间表?
create trigger tblinit_to_tblRaw
on tblinit
for insert
as
begin
    update r
    set r.Task_Percent = i.Task_Percent
    from inserted i
        join tblRaw r on i.UserID = r.UserID -- Join on Account_Num instead?
end