※ ChatGPTを利用し、要約された質問です(原文:Identity列に-1が入ってしまう)
Identity列に-1が入ってしまう原因と対策について
このQ&Aのポイント
Identity属性の列に-1が入る現象について質問させていただきました。
質問内容は、データベースのIdentity属性の列に-1が入る原因や退避策についてです。
現象の流れや疑問点、および環境について詳しく説明しています。
いつも参考にさせていただいています。
今回質問させていただいたのは、Identity属性の列に「-1」が入ってしまう現象についてです。
なぜこのようなことになるのか、何かお気づきのかたいらしたらご意見いただけないでしょうか。
[現象の流れ]
※SAMPLEという名前のテーブルを例に使います※
SAMPLEテーブルにレコードを10程度追加しました。
追加はMS SQL Server Management StudioのクエリエディタウィンドウからINSERT文を発行して行いました。
追加後、テーブルの中身が下記のようになっていました。
Sampleテーブル
A列 B列
1 1つ目の要素
2 2つ目の要素
-1 3つ目の要素
-1 4つ目の要素
-1 5つ目の要素
・
・
・
※A列に-1が入っている状態です。
[テーブル構成]
CREATE TABLE [dbo].[SAMPLE](
[A] [int] IDENTITY(1,1) NOT NULL,
[B] [nvarchar](20) NOT NULL
)
[疑問点]
なぜIdentity属性の列に-1が入るようなことが起こったのでしょうか?
原因が全く分かりません。
今後このようなことが起こっては怖いので、
原因や退避策があれば何かご意見いただけないでしょうか。
ちなみに1度データを削除し、
DBCC CHECKIDENT(テーブル名,RESEED, 0)
で番号をリセットしてデータを入れ直した後の再現はまだありません。
[環境]
Windows XP
MS SQL Server2008 Standard
MS SQL Server Management Studioよりテーブルの中身を見ています。
どうかよろしくお願いいたします。
お礼
jamshid6さん、お久しぶりです。ご回答ありがとう御座います。 お返事がおそくなりすみません。 >IDENTITY_INSERTをOFFのままでINSERTし、そのような事象が発生したのであれば、 >再現するならばマイクロソフトにログした方がいいくらいの内容です。 そうですか、とするとなにかケアレスミスを疑ったほうがよいですね。 確かにこのような事象が起こるのはかなりあり得ないことだと思います。 >気付かないうちに再発するのを避けたいならば、 >該当フィールドにユニーク制約(か主キー)とチェック制約を掛けてください。 ありがとうございます。 チェック制約を見落としていました。今後DBの構成に気をつけていきたいと思います。 アドバイスありがとうございました。