簡體   English   中英

如何設置SQL Server數據表插入和自動遞增列

[英]How to set SQL Server datatable insert and autoincrement column

我正在使用DataTableSqlBulkCopy將數據插入SQL Server數據庫表中。

我設法使用以下設置批量插入行,但僅使用負值,否則由於值不唯一而導致沖突:

DataTable table = new DataTable();
DataColumn column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.AutoIncrement = true;
column.AutoIncrementSeed = 0;
column.AutoIncrementStep = -1;
table.Columns.Add(column);
table.Columns.Add(DB_Base.DBTable_Start, typeof(DateTime));

我有一個循環,它會生成要插入的行,如下所示:

table.Rows.Add(null,tsoOptions.start);

然后,我設置表和連接,並使用WriteToServer()方法寫入數據。 一切正常,出現行但帶有負的自動增量主鍵。

我如何修改此值,以便它將在最后一個(MAX)值之后繼續的正值附加行,而不在單獨的查詢中讀取最大值?

假設在數據庫中的表是在打開列自動增加(即IDENTITY )的情況下正確創建的,請不要在代碼中重復此功能。 只需將記錄與該列的null值一起發送到數據庫,數據庫就會完成其工作。 注釋掉這些行,然后嘗試:

//column.AutoIncrement = true;
//column.AutoIncrementSeed = 0;
//column.AutoIncrementStep = -1;

更新實際上,最好的方法是根本不映射標識列,因此注釋掉所有這些行:

//DataColumn column = new DataColumn();
//column.DataType = System.Type.GetType("System.Int32");
//column.AutoIncrement = true;
//column.AutoIncrementSeed = 0;
//column.AutoIncrementStep = -1;
//table.Columns.Add(column);
//table.Columns.Add(DB_Base.DBTable_Start, typeof(DateTime));

並確保您沒有使用SqlBulkCopyOptions.KeepIdentity選中此復選框 )。

您是否需要在DataTable對象中進行設置? 通常,我會使用SSMS(Sql Server Management Studio)並將主鍵設置為Identity and Increment to one。 當我保存在數據庫中時,我只是不為該列發送任何內容:

1)右鍵單擊左側SSMS樹中的表,選擇設計 在此處輸入圖片說明

2)單擊您的主鍵列,然后在“列屬性”部分中查看,您應該這樣設置: 在此處輸入圖片說明

那應該做的!

更新:像這里建議的其他人一樣,注釋掉您試圖設置種子和身份的代碼行,並改為在SSMS中執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM