插入父记录并更新已关联的子项

时间:2017-04-24 18:22:50

标签: sql-server tsql

这是一个很简单的问题,但我无法弄清楚这样做的语法。我正在做一些数据迁移,我在一个表中有一些现有的记录,我想链接到一个全新的父表。

假设我有两张桌子:

declare @Parent table
(
    ID int identity(1,1),
    DummyField int
)

declare @Child table
(
    ID int identity(1,1),
    ParentID int, -- assume this is a new column, all nulls
    DummyField int
)

对于每个现有的子记录,插入一个新的父记录并更新Child以链接到它。

就是这样。这很简单,但如果不使用游标我就无法理解。

2 个答案:

答案 0 :(得分:1)

Seudo SQL逻辑似乎很简单......

insert in to parent.

update childern 
set ParentID = select @@IDENTITY
where ParentID = @previousParentId 

除非我错过了什么?

答案 1 :(得分:0)

孩子和父母的关系缺失

你要使用输出子句来实现,

尝试这样,

declare @output table (parentid int)
insert into parent (parentid)
output inserted.parentid into @output
-- values


update c 
set ParentID = o.parentid
from children c
inner join @output o on c.parentid=o.parentid