2015-04-16 62 views
1

我創建一個涉及父表和子表的數據庫插入腳本。在數據中插入腳本如何將父記錄的ID放在子記錄中?

父記錄的自動生成的ID將被插入到子記錄作爲引用密鑰。

問題是我不知道在腳本中如何告訴SQL服務器在子表記錄中使用插入的父記錄的ID作爲參考。請幫助我如何將父ID放在子插入語句中。

+1

你的問題不清楚。請提供一些樣本數據和預期結果。 –

回答

2

在你的代碼的頂部做到這一點:

DECLARE @parent_id int 

然後,你做的INSERT INTO父表後立即這樣做:

SELECT @parent_id = SCOPE_IDENTITY() 

檢索的大多數id最近插入到父表中。

最後,在INSERT INTO子表,做這樣的事情:

INSERT INTO child_table (parent_id, colA, colB, colC) SELECT @parent_id, valueA, valueB, valueC; 

(我只是做了值a,等等 - 你知道你的插件放入孩子的樣子,只是確保PARENT_ID與@parent_id匹配

0

如果你在你的表格批量插入您可以直接在插入語句插入的搶ID,然後使用這些值子實體的進一步處理,例如:。

Declare @out Table(id int, some_col int) 

Insert Into SomeTable(some_col) 
Output inserted.id, inserted.some_col Into @out 
Values(5),(6) 

現在,如果需要,現在您的表格變量中已插入標識以及其他一些列值。

在單獨插入的情況下,您也可以根據您的邏輯使用Scope_Identity@@Identity

0

可能是這工作得很好

CREATE TABLE PARENT 
(
Pid int primary key identity(1,1) 
,Pdescription varchar(100) 
) 

CREATE TABLE Child 

(
ChildId int primary key identity(1,1) 
,PidcHILD int foreign key references parent(pid) 

) 
CREATE TABLE #TEMPChild 

(
PidcHILD int 
) 


BEGIN TRAN 
INSERT INTO PARENT 
OUTPUT inserted.Pid 
INTO #TEMPChild(PidcHILD) 
VALUES('Record1'); 

INSERT INTO Child(PidcHILD)-- Add other columns here for child table 
SELECT PidcHILD FROM #TEMPChild 

COMMIT TRAN 

SELECT * FROM Child 
SELECT * FROM PARENT 
0

第1步:獲得最大的(PID)形式父表。 第2步:存儲變量。步驟3:將此變量插入到子表中。

相關問題