2012-04-10 5 views
-2

私はSqlServer 2005を使用していますが、私は自動インクリメント列を持っているテーブルを持っていますが、何らかの理由で自動インクリメントフィールドが1で始まらず、21,91のような乱数で始まっています。なぜそれが起こるのですか?SQL Serverの自動インクリメント列が常に1から始まるとは限りません。

+1

テーブル定義を表示し、すべてを大文字にしないでください。 –

+0

なぜあなたは叫ぶのですか? [dbcc checkidentに関する文書を確認する](http://msdn.microsoft.com/en-us/library/ms176057%28v=sql.105%29.aspx) –

答えて

1

あなたはどちらか

TRUNCATE TABLE XYZ 
1

MSSQLを使用していない...列にSeedを設定する必要が....または以前の行を入力した場合、あなたがテーブルの上にTRUNCATE TABLEコマンドを実行する必要がありますmax(id)+ 1を他のデータベースと同じようにIDとして使用します。最後に使用したIDを格納しており、それをインクリメントしています。あなたがアイデンティティ再シードすることができます

DBCC CHECKIDENT ('tablex', RESEED, 1) 

またはテーブルを切り捨てるし、これはまた、すべてのデータを削除している:あなたはもちろん、最後の値を再シードのアイデンティティを組み合わせることができます

TRUNCATE TABLE tablex 

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

ただし、競合によるIDの再シード時にエラーが発生することに注意してください。増分IDはユニークです!

関連する問題