2013-10-29 114 views
3

任何人都可以幫助我如何在批量插入後獲取主鍵列的列值嗎?在使用SqlBulkCopy批量插入後獲取主鍵列值

我正在使用SqlBulkCopy在表中插入多行(比如表1)。插入行後,我需要表1中列MsgId(PK)的id。我需要使用這些ID是在另一個表表2

這裏是我的代碼外鍵,

 DataTable dtMessageDetails = new DataTable("Message Details"); 
     SqlBulkCopy copier = new SqlBulkCopy(Connectionstring); 
     copier.DestinationTableName = "Table 1"; 
     copier.WriteToServer(dtMessageDetails); 
+0

看起來像是有一個'SqlRowsCopied'事件,但是它是爲UI交互而設計的,所以我不確定它有多可靠,或者它如何執行每行調用。否則,您可以在插入中指定ID,但這有點難看。 – 2013-10-29 08:04:45

+0

你的PK的構建過程如何?它是以某種方式自動生成的嗎? –

+0

是的,它是一個標識列,並且是自動生成的。 – Sudha

回答

2

鎖定表中插入批量之前。你知道行數,如果你選擇了最後一個ID,知道元素的總數,那麼你就會知道他們的ID。

+0

如果您正在同時插入該怎麼辦? –

+0

好吧,這就是爲什麼我們把桌子鎖在首位,不是嗎? –

+0

......... touche –