0

我有一个名为的表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.

有任何想法吗?

4

0 回答 0