2010-12-07 15 views
6

2147483647レコードを超えた後に実際に何が起こるのだろうか?Intプライマリキー超過int範囲

+3

あなたは煙を出させます –

+1

テストするのは簡単でしょう - 2147483646でシードされたIDENTITYカラムを作成してから、2つのレコードを追加してください! :-) –

+0

待機........... –

答えて

12

は、データ型intにIDENTITYを変換するメッセージ8115、レベル16、状態1、行1
算術オーバーフローエラー

CREATE TABLE #tester (
    testerid INT IDENTITY(1, 1) not null CONSTRAINT pk_tester 
    PRIMARY KEY CLUSTERED) 

DBCC checkident(#tester, reseed, 2147483647) 

INSERT #tester DEFAULT VALUES 
INSERT #tester DEFAULT VALUES 

それを試してみてください。

は簡単な解決策としてWhat To Do When Your Identity Column Maxes Outも参照してください

+3

+1読書の代わりに実行するのが大好き –

+0

ありがとう、良いもの! – 001

1

ほとんどの人が肯定的な側面よりも大きな一つであるintへの負の側面があることを忘れ。正の整数値を上回ると思われる場合は、-2,147,483,648の範囲の負の値でアイデンティティーを開始してください。または、実際に新しいDBAを2,147,483,647で開始し、-1でステップすることができます。

1

もしそうなら、より広い範囲のデータ型を使用してください。たとえばNUMERICまたはBIGINT。

関連する問題