-1

我在 TablesAs KeyA 列的 TableB 上有两个具有外键约束的表。到目前为止,我一直在进行手动插入,因为它们只需要添加几行。现在我需要进行批量插入,所以我的问题是,如果我在 TableA 中插入多行,我如何获取所有这些标识值并将它们与其他列值一起插入到 TableB 中。请参阅下面的脚本。

INSERT INTO Tablea
       ([KeyA]
       ,[Value] )
    SELECT 4 ,'StateA'
UNION ALL
SELECT 5 ,'StateB'
UNION ALL
SELECT 6 ,'StateC'

INSERT INTO Tableb
       ([KeyB]
       ,[fKeyA] //Get value from the inserted row from TableA
       ,[Desc])
SELECT 1 ,4,'Value1'
UNION ALL
SELECT 2 ,5,'Value2'
UNION ALL
SELECT 3 ,6, 'Value3'
4

2 回答 2

2

您可以使用 INSERT 的 OUTPUT 子句来执行此操作。这是一个例子:

CREATE TABLE #temp (id [int] IDENTITY (1, 1) PRIMARY KEY CLUSTERED, Val int)

CREATE TABLE #new (id [int], val int)

INSERT INTO #temp (val) OUTPUT inserted.id, inserted.val INTO #new VALUES (5), (6), (7) 

SELECT id, val FROM #new

DROP TABLE #new
DROP TABLE #temp

返回的结果集包括插入的 IDENTITY 值。

于 2012-08-23T15:48:33.327 回答
0

范围标识有时会返回不正确的值。请参阅OUTPUT解决方法部分中的使用。

于 2012-08-23T15:46:10.917 回答