ID が int 自動インクリメントであるテーブルがデータベースにあります。ndu エントリを作成すると、すべてがうまくいき、id が 1 増加します。
しかし、今日、私は大きな穴を見ました。レコードの 1 つは id=56 で、次のレコードは id=1055 です。
何が原因でしょうか。このデータベースでバックアップを作成しませんでした。
ID が int 自動インクリメントであるテーブルがデータベースにあります。ndu エントリを作成すると、すべてがうまくいき、id が 1 増加します。
しかし、今日、私は大きな穴を見ました。レコードの 1 つは id=56 で、次のレコードは id=1055 です。
何が原因でしょうか。このデータベースでバックアップを作成しませんでした。
これにはいくつかの原因が考えられます
DBCC CHECKIDENT
また、ステートメントですべての行を削除した場合、シードは 1 にリセットされないことに注意してくださいDELETE
。TRUNCATE
ほとんどの場合、挿入またはトランザクションのロールバックでエラーが発生した可能性があります。テーブルの ID 値はトランザクションの影響を受けません。たとえば、テーブルに値を挿入してトランザクションをロールバックしても、indentity 値は「増加したまま」になります。説明する短い例:
create table _test (
id int identity (1,1)
,txt varchar(2)
)
insert into _test(txt)
select 'aa' as txt
insert into _test(txt)
select 'bb' as txt union all
select 'ccc'
GO
insert into _test(txt)
select 'dd' as txt
select * from _test