开发者

How to update 2nd table with identity value of inserted rows into 1st table

开发者 https://www.devze.com 2023-03-07 18:42 出处:网络
I have the following table structures CREATE TABLE [dbo].[WorkItem]( [WorkItemId] [int] IDENTITY(1,1) NOT NULL,

I have the following table structures

CREATE TABLE [dbo].[WorkItem](
    [WorkItemId] [int] IDENTITY(1,1) NOT NULL,
    [WorkItemTypeId] [int] NOT NULL,
    [ActionDate] [datetime] NOT NULL,
    [WorkItemStatusId] [int] NOT NULL,
    [ClosedDate] [datetime] NULL,
)

CREATE TABLE [dbo].[Requ开发者_如何学JAVAirementWorkItem](
    [WorkItemId] [int] NOT NULL,
    [RequirementId] [int] NOT NULL,
)

CREATE TABLE #RequirmentWorkItems
(
    RequirementId int,
    WorkItemTypeId int,
    WorkItemStatusId int,
    ActionDate datetime
)

I use the #RequirmentWorkItems table to create workitems for requirements. I then need to INSERT the workitems into the WorkItem table and use the identity values from the WorkItem table to create the cross-reference rows in the RequirementWorkItem table.

Is there a way to do this without cursoring thru each row? And I can't put the RequirementId into the WorkItem table because depending on the WorkItemTypeId the WorkItem could be linked to a Requirement or a Notice or an Event.

So there are really 3 xref tables for WorkItems. Or would it be better to put a RequirementId, NoticeId and EventId in the WorkItem table and 1 of the columns would have a value and other 2 would be null? Hopefully all this makes sense. Thanks.


You should read MERGE and OUTPUT – the swiss army knife of T-SQL for more information about this.

Today I stumbled upon a different use for it, returning values using an OUTPUT clause from a table used as the source of data for an insertion. In other words, if I’m inserting from [tableA] into [tableB] then I may want some values from [tableA] after the fact, particularly if [tableB] has an identity. Observe my first attempt using a straight insertion where I am trying to get a field from @source.[id] that is not used in the insertion:

0

精彩评论

暂无评论...
验证码 换一张
取 消