我有一个名为的表Address
,它有一个AddressID
作为主键(自动递增值),它还有一个tmsp
类型为 的列TimeStamp
。
我创建了一个从表中删除记录的存储过程,但在删除之前,我将记录保存到.txt
文件中。在将记录保存到文本文件的过程中,我将时间戳转换为一个Varbinary
值。这意味着该tmsp
列保存为Varbinary
文本文件。
现在我创建一个新的存储过程将删除的记录插入数据库中,代码如下:
DECLARE @SQL NVARCHAR(MAX) = ''
BEGIN
SET IDENTITY_INSERT dbo.Address ON
SET @SQL = N'BULK INSERT Address
FROM ''' + @Address + '''
WITH (
FIRSTROW = 2,
FIELDTERMINATOR = '','',
ROWTERMINATOR = ''\n''
)'
EXEC sp_executesql @SQL
SET IDENTITY_INSERT dbo.Address OFF
END
我收到以下错误:
消息 273,级别 16,状态 1,过程 CleanUp_Address,第 43 行 [批处理开始第 2 行]
无法将显式值插入时间戳列。将 INSERT 与列列表一起使用以排除时间戳列,或将 DEFAULT 插入时间戳列。
当我删除IDENTITY_INSERT
它时,它会将数据作为新值插入表中,因此会AddressID
被覆盖,但这不是我想要的。我需要保留AddressID
.
有任何想法吗?