SQL Server:输出插入.Id与插入的临时用户定义表连接

时间:2012-05-08 08:07:32

标签: sql tsql

我遇到了问题..我使用带有用户定义表(@logs)的存储过程。我使用命令InOutLog将其插入到其他数据库表(OUTPUT into),我得到inserted id。

主要问题是我想将用户定义的表插入2个数据库表:

  1. InOutLog,我插入了ID和..
  2. 想要获取插入的id和其他已定义的表值(l.Title+';'+l.Comment)并将其插入表MessageLog
  3. 但我无法访问l.Title+';'+l.Comment。此外,我找不到任何简单的解决方案来合并我的用户定义的表和临时表与插入的id值..

    以下是代码:

    insert into InOutLog(NFCId, UserID, DateEnter, DateLeave, ProjectId, 
    Status, ServerDateEnter)
    output inserted.Id, inserted.DateLeave, l.Title+';'+l.Comment, inserted.UserId 
    into MessageLog(TagLogId, MessageDate, Answer, UserId)
      select l.NFCTagId, l.UserId, l.ScanDate, l.StartDate, @projectID, 0, getdate()
      from @logs l
    

    有什么建议吗?在这种情况下,最佳做法是什么?

1 个答案:

答案 0 :(得分:7)

使用MERGE而不是INSERT。

这允许您访问INSERTions的OUTPUT子句中的源表。

示例:http://sqlblog.com/blogs/jamie_thomson/archive/2010/01/06/merge-and-output-the-swiss-army-knife-of-t-sql.aspx