需要将Identity MasterId插入2个表#tblUniqueKeys和#tblChild

时间:2016-09-19 01:58:22

标签: sql-server sql-server-2008

我有2个表“#tblData1”和“#tblData2”链接“Id”列。表“#tblData2”可能是也可能不是“#tblData1”的相同“Id”的数据。

Create Table #tblData1 (Id int, Details VARCHAR(10),  UniqueKey VARCHAR(10), DetectDate DATE, UpdateBy VARCHAR(10));
insert into #tblData1 values (1, 'DT1', 'uq1', '01/15/2016', 'abc'), (2, 'DT2', 'uq2', '01/16/2016', 'xyz');

Create Table #tblData2 (Id int, Details VARCHAR(10), DetectDate DATE);
insert into #tblData2 values (1, 'DT11', '01/16/2016'), (1, 'DT12', '01/17/2016')

现在,我需要将数据插入3个表“#tblUniqueKeys”,“#tblMaster”和“#tblChild”。

  1. 在“#tblUniqueKeys”和“#tblChild”两个表中使用相同的标识“MasterId”。

  2. “#tblData1”中的数据分为2个表“#tblUniqueKeys”和“#tblMaster”。

  3. 数据从“#tblData2”进入表“”#tblChild“。

    create table #tblMaster(MasterId INT IDENTITY(101,1),Details VARCHAR(10),DetectDate DATE,UpdateBy VARCHAR(10)); create table #tblUniqueKeys(UqId INT IDENTITY(10,1),MasterId INT,UniqueKey VARCHAR(10),DetectDate DATE); create table #tblChild(ChildId INT IDENTITY(201,1),MasterId INT,Details VARCHAR(10),DetectDate DATE);

  4. 使用下面的“Merge”sql查询,我可以将记录插入到2个表“#tblUniqueKeys”和“#tblMaster”中。

    问题,如何将记录插入第3个表“#tblChild”?我们可以在同一个Merge查询中将记录和“MasterId”一起插入第3个表吗?感谢!!!

    MERGE INTO #tblMaster AS Dest
    USING
    (
    SELECT UniqueKey, Details, DetectDate, UpdateBy
    FROM #tblData1
    ) AS Src
    ON (1 = 0)
    WHEN NOT MATCHED BY TARGET THEN
    INSERT
    (
    Details
    ,DetectDate
    ,UpdateBy)
    VALUES
    (Src.Details
    ,Src.DetectDate
    ,Src.UpdateBy)
     OUTPUT inserted.MasterId, Src.UniqueKey, Src.DetectDate
     INTO #tblUniqueKeys(MasterId, UniqueKey, DetectDate);
    
    select * from #tblMaster
    select * from #tblUniqueKeys
    
    
    DROP TABLE #tblData1;
    drop table #tblData2;
    DROP TABLE #tblMaster;
    drop table #tblChild
    DROP TABLE #tblUniqueKeys;
    

0 个答案:

没有答案