-2

私は SqlServer 2005 を使用しており、自動インクリメント列を持つテーブルがありますが、何らかの理由で自動インクリメント フィールドが 1 ではなく、21,91 のような乱数で始まります。なぜそれが起こるのですか?

4

2 に答える 2

1

列に を設定する必要があります....または、以前に行を入力したことがある場合は、テーブルでコマンドSeedを実行する必要があります...TRUNCATE TABLE

TRUNCATE TABLE XYZ
于 2012-04-10T07:55:33.543 に答える
1

mssql は、他のデータベースのように ID として max(id) + 1 を使用していません。最後に使用されたIDを保存し、それを増やしています。

ID を再シードできます。

DBCC CHECKIDENT ('tablex', RESEED, 1)

またはテーブルを切り捨てます。これにより、すべてのデータも削除されます。

TRUNCATE TABLE tablex

もちろん、ID reseed を最後の値と組み合わせることができます。

DBCC CHECKIDENT ('tablex', RESEED, (SELECT max(id) + 1 FROM tablex))

ただし、競合が原因で ID を再シードするとエラーが発生することに注意してください。自動インクリメント ID は一意です。

于 2012-04-10T09:26:41.930 に答える