在SQL Server中的标识列中插入小于最大值的值

时间:2016-04-15 15:45:07

标签: sql sql-server tsql

我从表中删除了一些记录,并希望从备份表中重新插入它们。主键列是标识列,它的值大于删除的值。当我尝试插入其抛出错误时。我不能重新列出这个专栏。如果可能,请在SQL服务器中告诉我。

1 个答案:

答案 0 :(得分:2)

在执行此操作之前,请确保没有其他进程插入此表,否则在IDENTITY禁用时可能会收到错误。或者将transaction with the isolation level中的所有内容设置为SERIALIZABLE,以防止来自其他进程的任何并发更改。

  1. 禁用表/列上的IDENTITY
  2. 执行备份中的INSERT语句,请务必指定IDENTITY列的列值。
  3. 重新启用表格/列上的IDENTITY
  4. SQL:

    SET IDENTITY_INSERT <your_table> OFF
    -- Exceute Inserts
    SET IDENTITY_INSERT <your_table> ON
    

    备注

    您应该执行包含在事务中的插入。这样,如果出现故障,您可以回滚所有内容。您也不应该有任何冲突,因为身份总是递增,因此重新添加已删除的记录不会造成问题。完成后,您可能希望在PK上检查索引碎片。