2011-12-09 24 views
2

こんにちは私のデータベースに削除された自動インクリメントされた主キーを保存することは可能です。私は、主キー4を削除し、Iが再びIの主キーを挿入した場合の例Mysql再起動自動int主キー

ため私は NAME_ID

を有します挿入する必要があります4。

so。 1 2 3 4 5


に名前を付け、私は、データ一次キーが再度5ない6おかげでなければならない追加の主キー5(名称1 2 3 4)


を削除しました!

+3

重要ですか? – ajreal

+3

自動増分フィールドを自動増分したくない場合は、なぜ*自動増分フィールドを使用したいのですか?キーナンバー2を削除するとどうなりますか? – spider

答えて

2

これらの場合、自動生成フィールドには常にギャップがあります。

ID = 4、ID = 5の行を格納した監査テーブルまたは履歴テーブルがある場合はどうなりますか?その後、それらをもう一度削除しますか?どのように行を区別しますか?

例では、最後の行だけを削除しましたか?あなたはID = 1を削除しますか?じゃあ何? 、彼らはちょうどそのテーブルに固有の内部番号(および監査もののような任意の関連するテーブル)ですさ

:外部意味はここに他のコメントと回答と同様に

+0

ありがとう!私はこの方法を使って不利益を見ることはしません。 :)) –

+0

@rjtubera:自動インクリメントフィールドのギャップは標準であり、期待される動作です。不利ではありません。 "自分のローリング"にはもっと不利な点があり、涙で終わる – gbn

2

を添付すべきではないが、私はこれをお勧めしません、自動インクリメント列のデータが外部から参照されていますが、ALTER TABLEクエリを経由して特定の値に次の自動インクリメント番号を設定することができます場合は特に

ALTER TABLE T_YourTable AUTO_INCREMENT=4 

また、列をドロップすることができ、その後、列を再度追加します同じ属性を使用します(行が多い場合は高価になる可能性があります)。

0

なぜですか?

これは一意の識別子です。

また、データを削除するときだけでなく、コミットされたトランザクションと重複する挿入トランザクションをロールバックするときにも、データベースクラスタとのギャップが発生します。

ギャップを埋める仕組みは複雑で、遅く、維持が難しく、必要ではありません。

関連する問題