1

私は携帯電話会社のプロジェクトを行っています(2回目の使用の携帯電話が販売されています)....

のようなテーブルを作成しました。

CREATE TABLE mobileDetails  
(  
       mobileID           INT IDENTITY PRIMARY KEY,  
       mobileModel        VARCHAR(20),  
       price              VARCHAR(20),  
)

管理者がログインして新しいモバイルを追加した場合、新しく追加されたモバイルmobileID
は、最後の既存のモバイル ID 値 + 1 になりmobileIDますIDENTITY。(私はそれで非常に終わっています)

しかし、最後のMOBILEmobileIDが4で、データベースから削除しているとします....

その後、新しいモバイルを追加すると、データベースは新しく追加されたモバイルの ID を 4 として与えるはずですが、代わりに 5 を与えます.....

これを克服するためのアイデアはありますか?

私の未熟な英語で本当に申し訳ありません。あなたの助けを前もって感謝します:)

4

3 に答える 3

1

テーブルの現在のシード情報を確認するには、次を使用します。

DBCC CHECKIDENT ('table_name', NORESEED)  
たとえば、最後のレコードを削除すると、シードは一貫性を維持できなくなります。
Checking identity information: current identity value '8', current column value '7'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

次に、次のクエリを使用して再シードできます。新しいレコードを挿入すると、削除されたレコードからシードが開始されます。

DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value) 

あなたの場合、私はあなたと同じテーブルを作成し、いくつかのレコードを挿入しました:


mobileID    mobileModel price
1   aaa 1111
2   bbbb    2222
4   aaa 1111
5   bbbb    2222
6   aaa 1111
7   bbbb    2222
8         cccc      3333
次に、最後のレコードを削除します。


mobileID    mobileModel price
1   aaa 1111
2   bbbb    2222
4   aaa 1111
5   bbbb    2222
6   aaa 1111
7   bbbb    2222

次のレコードを 8 から開始するには、次のコマンドを実行します。

DBCC CHECKIDENT ('mobileDetails', RESEED,7) 

次に、3 つの新しいレコードを挿入します。


mobileID    mobileModel price
1   aaa 1111
2   bbbb    2222
4   aaa 1111
5   bbbb    2222
6   aaa 1111
7   bbbb    2222
8   aaa 1111
9   bbbb    2222
10  cccc    33333

于 2013-03-20T18:56:26.893 に答える
0

DBCC CHECKIDENT ("mobileDetails", RESEED, select max(mobibleID) from mobileDetails);

于 2013-03-20T18:39:55.907 に答える