-1

TablesAs KeyA 列の TableB に外部キー制約を持つ 2 つのテーブルがあります。追加する行はほんの数行だったので、今まで手動で挿入していました。今、一括挿入を行う必要があるので、TableA に複数の行を挿入する場合、これらの ID 値をすべて取得して、他の列の値と一緒に 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

スコープ ID が正しくない値を返すことがあります。回避策セクションの の使用を参照OUTPUTしてください。

于 2012-08-23T15:46:10.917 に答える