2015-07-22 61 views
0

我的第一個表唯一鍵是子表中的外鍵,我使用的是存儲過程中的事務,當我使用事務時出現問題然後第一個表被插入的唯一鍵顯示之前沒有值提交查詢和第二個表的數據插入我需要在第一個表中插入行的唯一鍵。 我會在where子句中使用select查詢。但我的面試官說,告訴我一些其他的方式來實現這一點,他說他不能寫100張桌子的「select where」語句。如何在多個表中使用事務插入數據

+2

在過程中使用循環。告訴我你的代碼,也許我可以幫你 – starko

回答

3

在這種情況下,您將使用SCOPE_IDENTITY()函數檢索父表中新插入行的標識。您的腳本應如下所示:

begin transaction 
declare @parentId int; 
insert into ParentTable(Value1, Value2) values('1', '2') 

select @parentId = SCOPE_IDENTITY() 
insert into ChildTable(ParentId, Value) values(@parentId, '3') 
commit 
+0

哇,這聽起來不錯,但是當主鍵列上的isIdentity設置爲false時,我可以使用這個範圍標識。 –

+0

,因爲對於唯一的主鍵,我使用自己的邏輯來創建PK不使用標識列 –

+0

@BRBHARDWAJ,如果您使用自定義邏輯創建PK值,那麼您不需要'scope_identity()'。只需將'@ parentId'作爲參數傳遞給存儲過程即可。 – RePierre

相關問題