如何將帶有現有密鑰的DataTable插入SQL Server表

database datatable sqlbulkcopy sql-server vb.net

我正在使用VB.NET ..我有一個名為“QUESTION”的DataTable,包含3個字段:

  • QuestionNumber(唯一整數鍵)
  • QuestionText
  • 問題類型

在我的SQL Server數據庫中,我創建了一個名為“QUESTION”的表,其中包含相同的字段。 QuestionNumber定義為整數唯一鍵,自動增量

現在,當我製作批量拷貝以將DataTable插入SQL Server時,數據庫將覆蓋DataTable中的QuestionNumber並生成新的(從1增量1開始)。

如何更改我的數據庫設置,將原始的QuestionNumbers複製到數據庫中?

一般承認的答案

當只是使用插入嘗試:

SET IDENTITY_INSERT [your table] ON
INSERT INTO [your table] (identityCol, col1,...) VALUES (identityCol, col1,...)
SET IDENTITY_INSERT [your table] OFF

批量複製數據時,需要在命令中添加特殊參數/開關/提示,詳細說明如下:

批量導入數據時保持身份值


熱門答案

查找IDENTITY INSERT。你打開它。更新表格,然後將其關閉。

SET IDENTITY_INSERT table ON

請注意,您一次只能在一張桌子上使用它。如果為另一個表打開它,它會在最後一個表上關閉。

如果插入的值高於最大現有值,則會將其自身重新設置為該值,以便所有新值都更大。

再次,不要忘記關閉它:

SET IDENTITY_INSERT table OFF

如果你真的在做BULK INSERT,那麼不要忘記KEEPIDENTITY限定符,它告訴服務器不要忽略你的身份值,否則,它將忽略你的標識值並為標識列生成新的標識值。

批量導入數據時保持身份值



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow