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

Ged*_*kas 2 sql t-sql

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

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

  1. InOutLog,我在哪里插入id和..
  2. 想要获取插入的id和其他已定义的表值(l.Title+';'+l.Comment)并将其插入表中MessageLog

但我无法访问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
Run Code Online (Sandbox Code Playgroud)

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

gbn*_*gbn 7

使用MERGE而不是INSERT.

这允许您访问INSERTION的OUTPUT子句中的源表.

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