3

我遇到了一个问题。我使用带有用户定义表 ( @logs) 的存储过程。我使用 command 将其插入到其他数据库表 ( 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

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

4

1 回答 1

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

于 2012-05-08T08:15:18.400 回答