我有一个包含56行的表格。添加新行从ID 59开始。
如何继续使用ID 57?
答案 0 :(得分:2)
当您从表中删除列或将标识更改为更高的数字时,会发生这种情况。
可以重置身份,但除非你有充分的理由这样做(很好的理由可能是删除了大部分的表内容),我不建议这样做。
可以找到有关如何重新设置身份的一些详细信息here:
使用它的方法是
DBCC CHECKIDENT ( table_name, RESEED, new_reseed_value )
其中new_reseed_value对于这种特定情况将为57(即身份将从57开始)。但是,请注意,如果表格中的某些内容ID高于57,则会失败。
或者,您可以使用:
SET IDENTITY_INSERT Table_Name ON
INSERT INTO Table_Name(ID, Other_Columns,You_Are_Inserting,You_Must_Specify_All_Of_Them)
VALUES (57, 'SomeData','OtherData',...)
SET IDENTITY_INSERT Table_Name OFF
这将允许您通过指定标识列值进行插入而不重新播种。此外,请勿插入比当前标识更高的值,否则您将无法插入。
答案 1 :(得分:0)
这是IDENTITY
列的预期行为。如果你想要连续的数字,你不应该使用它们,因为每次插入新行时身份值都会增加,但如果删除最后一行,不会减少,也不会减少如果您开始一个事务,插入一个新行,然后回滚该事务。
您可以使用DBCC CHECKIDENT
命令更改标识值,但实际上,您应该将列更改为常规非标识列,并从您自己的代码中管理值。
答案 2 :(得分:0)
您需要为特定表启用 Identity_insert 。
SET IDENTITY_INSERT YourTableName ON
Insert into YourTableName (IDField,rest of the column names)
values (57, rest of the column values)
SET IDENTITY_INSERT YourTableNAme OFF