2016-09-13 52 views
0

下面我有3個表#tblData#tblMaster#tblChild,在這裏我需要#tblData分裂成其他2臺#tblMaster#tblChild與身份密鑰一起插入子數據。需要從主

#tblChild表中,我需要來自#tblMaster的身份密鑰以及來自#tblData表的其他數據。

Create Table #tblData (UniqueKey VARCHAR(10), DateTimeNow DATETIME, UpdateBy VARCHAR(10)) 
insert into #tblData values ('uq1', getdate(), 'abc'), ('uq2', getdate(), 'xyz') 
--select * from #tblData 
create Table #tblMaster (MasterId INT IDENTITY(1,1), DateTimeNow DATETIME, UpdateBy VARCHAR(10)) 
create Table #tblChild (ChildId INT IDENTITY(10,10), MasterId INT, UniqueKey VARCHAR(10), DateTimeNow DATETIME) 

drop table #tblChild 
drop table #tblMaster 
drop table #tblData 

通過下面的查詢我能夠將數據插入到「#tblMaster」,並能夠識別存儲到一個表變量「@OutputTbl」。

DECLARE @OutputTbl TABLE (MasterId INT) 
INSERT INTO #tblMaster(DateTimeNow, UpdateBy) 
OUTPUT INSERTED.MasterId INTO @OutputTbl(MasterId) 
SELECT DateTimeNow, UpdateBy FROM #tblData 

如何從#tblData其他值到表變量@OutputTb,這樣我可以插入到@OutputTb#tblChild有任何其他方式做到這一點?

+0

這三個表格是如何相互關聯的,即決定'uq1'是否應該進入子表格的第一行或第二行? –

+0

@shree,非常有效的一點。目前這是連續的。假設我們使用SQL 2008,在表「#tblData」 – user584018

回答

0

根據您是否使用SQL Server 2008或更高版本,可以使用OUTPUT and MERGE

我已經使用了上述方法,並發現它運行良好。

+0

中有一個標識列 – user584018