自動採番はあなたにとってそれほど意味のあるものであってはなりません。彼らの保証は、彼らが独自性を提供することだけです。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 テーブルの現在の ID 値を強制的に 30 にします。
USE AdventureWorks;
GO
DBCC CHECKIDENT ('HumanResources.Employee', RESEED, 30);
GO
私はこれを推奨しているわけではありませんが、指摘するだけです。 DBCC CHECKIDENTすでに使用されている値に再シードしようとすると、エラーがスローされる可能性があります。その場合、そのようなタスクに依存している場合はロジックが必要になります。
なぜこれらの数字がそれほど重要なのかという思考プロセスに疑問を感じます。インクリメントまたはデクリメントなどで呼び出される 1 つの追加フィールドが必要なように思えLineNumberますが、この場合でも、削除されたレコードの後に来る行を処理する必要があります。したがって、50 行あり、25 行を削除した場合、25 より大きい行の番号を付け直す必要があります。
UPDATE
MyTable
SET LineItemNumber = LineItemNumber - 1
WHERE
LineItemNumber > @LineItemNumberToBeDeleted