使用目标 table 标识列批量插入
Bulk insert with destination table identity column
我正在尝试从 DataTable
批量插入 SQL 服务器中的 table,但在我的数据中 table 我没有一个 id 列。当我调用 WriteToServer
方法时,它抛出异常并显示消息
cannot insert null in column id
代码:
CREATE TABLE [dbo].[TBL_HISTORY]
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[VAR1] [int] NOT NULL,
[VAR2] [datetime] NOT NULL,
[VAR3] [smallint] NOT NULL
)
我的数据表有以下数据
[VAR1], [VAR2], [VAR3]
C# 代码:
using(SqlBulkCopy bulk = new SqlBulkCopy(this.mConnection,SqlBulkCopyOptions.UseInternalTransaction | SqlBulkCopyOptions.KeepIdentity, null))
{
bulk.DestinationTableName = ToTable;
bulk.WriteToServer(dt); // here exception is thrown
}
您需要删除 SqlBulkCopyOptions.KeepIdentity 选项。您告诉它使用您提供的身份,并且有 none,又名 null。
https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopyoptions%28v=vs.110%29.aspx
保持身份
保留源标识值。未指定时,标识值由目标分配。
我正在尝试从 DataTable
批量插入 SQL 服务器中的 table,但在我的数据中 table 我没有一个 id 列。当我调用 WriteToServer
方法时,它抛出异常并显示消息
cannot insert null in column id
代码:
CREATE TABLE [dbo].[TBL_HISTORY]
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[VAR1] [int] NOT NULL,
[VAR2] [datetime] NOT NULL,
[VAR3] [smallint] NOT NULL
)
我的数据表有以下数据
[VAR1], [VAR2], [VAR3]
C# 代码:
using(SqlBulkCopy bulk = new SqlBulkCopy(this.mConnection,SqlBulkCopyOptions.UseInternalTransaction | SqlBulkCopyOptions.KeepIdentity, null))
{
bulk.DestinationTableName = ToTable;
bulk.WriteToServer(dt); // here exception is thrown
}
您需要删除 SqlBulkCopyOptions.KeepIdentity 选项。您告诉它使用您提供的身份,并且有 none,又名 null。
https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopyoptions%28v=vs.110%29.aspx
保持身份
保留源标识值。未指定时,标识值由目标分配。