SqlServer - 插入多个记录并获取新旧ID

时间:2018-03-14 09:04:15

标签: sql sql-server

我有这个问题:

CREATE TABLE [factOffertDetail](
    [idOffertRow] [INT] IDENTITY(1,1) NOT NULL,
    [idOffertRegion] [INT] NOT NULL,
    [idProduct] [INT] NOT NULL,
    [Qty] [DECIMAL](12, 2) NULL,
    [idUnitPrice] [TINYINT] NULL
    )

DECLARE @TMP2 TABLE (
    idOffertRowNEW INT,
    idOffertRow INT
    )

INSERT INTO factOffertDetail
        ( idOffertRegion ,
          idProduct ,
          Qty ,
          idUnitPrice 
            )
    OUTPUT inserted.idOffertRow INTO @TMP2(d.idOffertRowNEW)
    SELECT 
        d.idOffertRegion,
           d.idProduct ,
           d.Qty ,
           d.idUnitPrice
    FROM factOffertDetail d 

我需要获取由身份生成的旧 idOffertRow 的键。

idOffertRow 是factOffertDetail表的标识(1,1)键。

如何使用插入执行此操作?

是否可以或我必须切换到合并命令?

感谢支持

1 个答案:

答案 0 :(得分:1)

我建议这样做:

用新的coloum改变你的桌子,

ALTER TABLE [factOffertDetail]
ADD [ParentId] [INT] NULL

然后,

INSERT INTO factOffertDetail
(   ParentId,
    idOffertRegion ,
    idProduct ,
    Qty ,
    idUnitPrice 
    )
OUTPUT inserted.idOffertRow,inserted.ParentId INTO @TMP2(idOffertRowNEW,idOffertRow)
SELECT 
    d.idOffertRow,
    d.idOffertRegion,
    d.idProduct ,
    d.Qty ,
    d.idUnitPrice
FROM factOffertDetail d

谢谢!