我有一个table
,如下所示:
+--------+--------+
| TestNo | Value |
+--------+--------+
| 1 | Test1 |
| 2 | Test2 |
| 3 | Test3 |
| 6 | Test6 |
| 7 | Test7 |
+--------+--------+
其中TestNo
是Primary Key
,并具有以下值。
请注意,此处缺少4, 5
TestNo
值。我需要插入以TestNo 4
开头的新值。
所以我这样做了:
dbcc checkident('tbl', reseed, 3)
它有效,并且在插入2条记录之后:
+--------+-------+
| TestNo | Value |
+--------+-------+
| 1 | Test1 |
| 2 | Test2 |
| 3 | Test3 |
| 4 | Test4 |
| 5 | Test5 |
| 6 | Test6 |
| 7 | Test7 |
+--------+-------+
但是插入第三条记录后,出现以下错误:
违反主键约束'PK__QCUnitTe__554AD375D32C4684'。无法在对象'dbo.QCUnitTest'中插入重复键。重复键值为(6)。 该声明已终止。
那么,如果存在该值,有什么方法可以超越它?就像在我的情况下一样,它应该超越它到8
。
答案 0 :(得分:0)
否,没有办法让IDENTITY列自动跳过已经存在的值。
您唯一可以做的就是在IDENTITY列中填充空白(同时保持现有值),就是暂时关闭IDENTITY并手动填充空白,然后重新打开IDENTITY。