我遇到了问题..我使用带有用户定义表(@logs
)的存储过程。我使用命令InOutLog
将其插入到其他数据库表(OUTPUT into
),我得到inserted
id。
主要问题是我想将用户定义的表插入2个数据库表:
InOutLog
,我插入了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
有什么建议吗?在这种情况下,最佳做法是什么?
答案 0 :(得分:7)
使用MERGE而不是INSERT。
这允许您访问INSERTions的OUTPUT子句中的源表。