2010-12-10 11 views
0
---------- 
ID NAME 
3 A 
4 B 
5 C 
---------- 

すべてのレコードを削除すると、5番めのレコードの後に​​続きますが、このテーブルの最初のインデックスを挿入する必要があります。誰でも助けてくれますか?テーブルに空レコードを挿入する方法

+0

@ InSane、ID列はIDです.ID(1,2,6,7,8 ...) – ozkank

答えて

0

ID列がIDENTITY列であるように見えます。これらの列は、削除に関係なく常に次の値を追加します。

アプリケーション設計に依存するような特定のIDを持つ必要がありますが、これは適切ではありません。 IDフィールドにはギャップがあります(これは正常です)。アプリケーションはそれらに頼ってはいけません。

かかわらず、ここでこれを行う方法のカップルです:1、オフの場合

SET IDENTITY INSERT ONを使用します。

SET IDENTITY INSERT dbo.myTable ON 

INSERT INTO myTable 
(ID, NAME) 
VALUES 
(1, 'H') 

SET IDENTITY INSERT dbo.myTable OFF 

播種をリセットするには、RESEEDを使用して、DBCC CHECKIDENTコマンドを使用する必要があります:

DBCC CHECKIDENT('myTable', RESEED, 0) 
1

簡単な方法は、

になります TRUNCATE TABLE (Transact-SQL)

から

TRUNCATE TABLE mytable; 

代わりに

DELETE FROM mytable 

テーブルがID列が含まれている場合、その列のカウンタは、列に定義されたシード値にリセットされます。シードが定義されていない場合、デフォルト値1が使用されます。アイデンティティ・カウンタを保持するには、代わりにDELETEを使用します。

+0

+1で挿入すると、DELETE + DBCC CHECKINDENTを使用するよりスマートな方法です – InSane

0

私はあなたが再度1で自動生成されたID列の値を再開したいと思いますか? それはIDENTITY列であるならば、あなたはTEH、次のコマンド

DBCC CHECKIDENT('YourTableNameHere', RESEED, 0) 
2

でシード値をリセットすることができ、私はあなたがIDENTITYカラムとして、あなたのID列を持っていると仮定して、あなたが1で再び開始するために、それをリセットしたいですテーブルからすべての行を削除した後。

まず、IDの値が1から始まるような必要性があるとすれば、IDENTITY列には常に番号が付けられている必要があります。不透明なブロブとして扱われます。それらが整数であり、覚えやすいという事実は、実装の詳細です。

第二に、あなたは、このようなリセットを行いたい場合は、あなたがDBCC CHECKIDENTを使用したい


編集

あなたが本当に彼らは「ので、たとえば(これらのID値に依存して行う場合アプリケーションでも同じように使用されています)、最初に列にIDENTITYプロパティを設定しないでください。残念ながら、このプロパティを直接削除することはできません。このプロパティを使用せずにテーブルのコピーを作成し、すべての行をコピーし、元のテーブルを削除し、コピーの名前を変更する必要があります。Management Studioはあなたがプロパティを削除することができますが、私はちょうど舞台裏で説明したことを行うことができますふりをします。

0

データベースID機能は、異なるレコードが同じIDを持つことは絶対にありません。これは、同時に存在するレコードだけでなく、別のレコードが削除された後に挿入される新しいレコードに対しても有効です。これは競合を避けるために非常に便利です。それは時にはいくつかの人々の味覚を壊すようだが、それを回避しないでください。

レコードに自己選択番号を割り当てる必要がある場合は、別の列を追加します。自動索引付けされた列は常に使用する必要があります。他のユーザーは、インデックスの作成方法を教えてくれましたが、この機能は非常に慎重に使用してください。

関連する問題