自动编号对您来说不应该那么有意义。他们的保证是他们只提供唯一性。如果您使用的是 sql server ,您仍然可以重新播种DBCC CHECKIDENT
。
Checks the current identity value for the specified table and, if it is needed, changes the identity value. You can also use DBCC CHECKIDENT to manually set a new seed value for the identity column.
来自 BOL:以下示例将 AdventureWorks 数据库中 Employee 表中的当前标识值强制为 30。
USE AdventureWorks;
GO
DBCC CHECKIDENT ('HumanResources.Employee', RESEED, 30);
GO
我不推荐这个,只是指出来。 DBCC CHECKIDENT
如果您尝试重新设置为已使用的值,则可能会引发错误,在这种情况下,如果您依赖此类任务,则必须具有逻辑。
我质疑是什么让这些数字如此重要的思考过程?听起来您想要一个称为LineNumber
递增或递减的附加字段等。但即使在这种情况下,您也必须处理删除记录之后的行。因此,如果您有 50 行并删除第 25 行,则必须重新编号大于 25 的任何内容:
UPDATE
MyTable
SET LineItemNumber = LineItemNumber - 1
WHERE
LineItemNumber > @LineItemNumberToBeDeleted