2017-01-20 8 views
-2

テーブルに自動インクリメント列があります。行を削除すると、私はIDを再利用できるようにしたいが、システムはその行為をしていない。手伝って頂けますか?Mysqlのインクリメント

enter image description here

私は、システムが再び使用されていない行のIDを使用します。

+4

簡単な答えは、idを再利用しないことです。 – jarlh

+2

auto_incrementの仕事はどうですか? – Jens

+0

どうすればいいですか?私は自動増加したい+未使用の行を使用する –

答えて

0

ほとんどの人がコメントで指摘したように、悪い考えです。あなたはある意味では、アプリケーションの削除機能をプログラミングしなければならないことのいずれか:

  • マーク行の空のスロットに新しいデータで
  • 力挿入するデータを、それを埋めることができるように削除されたよう

インデックスを更新する際にパフォーマンスにどのような影響があるのか​​よくわからないが、通常プライマリキーは行が物理ストレージ(MSSQL)上で順序付けされる方法を決定しますが、間違いなく次のようになります:

  • はアプリケーションに複雑さをもたらします
  • 他のアプリケーションやユーザーが論理を無視して行を削除して挿入しないことを保証することはできません。複雑さを増し、API経由ですべてを公開しない限り。
  • すべての行とそのキーの再利用を他のテーブルで処理する(IDはどこかで外部キーとなることを考慮して)
  • 他のソリューションと統合する場合は、データコンシューマの開発に悪夢があります。既に行があるかどうかを確認してください(行を更新するたびにPKを変更すると悪いことがあります)。

私は他の人がこれが悪い考えである理由を考え出すことができると思う。だから短いです。 これはアプリケーションをより複雑にするものではありません。あなたがそうするべき正当な理由がない限り、それをしないでください。

インクリメンタルプライマリキーは決して元に戻りません。何らかの理由で再利用可能な数値が必要な場合は、再利用可能なビジネスキーを持つ別の列を作成し、それを作成する関数を作成するだけです。

関連する問題