0

データベースに ID 列があるとします。

ここに画像の説明を入力

行番号3を削除したい:

ここに画像の説明を入力

現在、私のデータベースのIDは次のとおりです。

ここに画像の説明を入力

質問: (この場合) ID 3 フィールドを再利用することは可能ですか? ID 4 は ID 3 フィールドにジャンプしますか? したがって、データベースは次のようになります。

ここに画像の説明を入力

RESEED コマンドについても知ってDBCC CHECKIDENT (MyTable, RESEED, desiredIDNumber)いますが、私の場合はこれが必要だとは思いません。(私の場合)2>からのすべてのIDが変更されるためです。(ID3 は ID4 を取得し、ID4 は ID5 を取得します。ID5 はもう存在しません)。

4

3 に答える 3

4

これを行うための魔法のコマンドがあるかどうかを尋ねていますか? 私が今まで聞いたことがありません。{率直に言って、これをやりたいと思っている人は聞いたことがありません}

これが技術的に可能かどうかを尋ねていますか?もちろん。一大事業となります。これを行うプログラムを作成することはできますが、すべての外部キー参照を変更するためのすべての作業のオーバーヘッドは非常に大きくなり、...

なんで?これから何を期待していますか?「空」のスペースは問題ありません。整数フィールドのスペースが不足していませんか?

于 2013-09-28T11:42:07.827 に答える
1

一般的な考え方は次のとおりです。UPDATE T SET ID = ID - 1 WHERE ID > 3

これを好みに合わせてカスタマイズできます。おそらく、このステートメントの ID 挿入を有効にする必要があります。

他のデータがこれらの ID を参照すると、破損する可能性があるため注意してください。通常、ID は変更されません。たぶん、新しい列を追加して、値をContiguousID INT NOT NULLそのままにしておきます。IDENTITY

于 2013-09-28T11:38:58.417 に答える
0

Id 列が ID 列である場合、Sql Server が自動インクリメント プロセスの一部として不足している ID を入力することはできません。それはしません。

SET IDENTITY_INSERTコマンドを使用して、ID を自分で入力できます。

一般的に、それは面倒なことではありません。

于 2013-09-28T11:38:50.433 に答える