当您从另一个表创建临时表时,如何防止自动增加id ?

本文关键字:何防止 增加 id 另一个 临时表 创建 | 更新日期: 2023-09-27 18:09:38

我目前通过一个数据表将数据库的一部分导出为XML,并且还需要能够再次重新导入数据。

我一直遵循http://www.jarloo.com/c-bulk-upsert-to-sql-server-tutorial/为了批量导入数据,但似乎在导出和重新导入临时表后,id值正在发生变化。

我怀疑它们被丢弃了,临时表上的自动增量(使用"select top 0 * into #import from tblJob;")导致ID损坏,因为当我编辑XML文件并重新导入时,它正在更新错误的行

当您从另一个表创建临时表时,如何防止自动增加id ?

你可以让SqlBulkCopy知道你想从你的SqlBulkCopyOptions源数据中保留标识值,像这样:

using (SqlBulkCopy bulk = new SqlBulkCopy(con, SqlBulkCopyOptions.KeepIdentity))
{
    bulk.DestinationTableName = "#Prices";
    bulk.WriteToServer(table);
}

为了在重导入时保持标识完整:

首先,确保原始记录不再存在(因为我假设您的身份也是主键)

,

set identity_insert on [table]
import your records
set identity_insert off [table]

如果您正在执行批量插入任务,在…下面还有一个选项映射?"启用身份插入"