自动编号对您来说不应该那么有意义。他们的保证是他们只提供唯一性。如果您使用的是 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