0

P_ID、P_NAME、P_AGEを持つテーブルPERSON_TABLEがあります

P_ID は主キーで、自動インクリメントです。

ユーザーが手動で各列にデータを配置するアクティビティがあります。成功すると、 1 、 2 、 3 の順に主キーが作成されます。

ただし、アプリケーションには削除機能もあります。行 2 を削除した場合、再度 1 行を挿入すると、主キー 4 になります。次に挿入されるデータでは、最初に使用可能な主キーである 2 を使用したいと考えています。どうすればそれを達成できますか?

ありがとう

4

1 に答える 1

3

この要件を再検討する必要があります。必要になることはめったにありません。

シーケンスにギャップがある状況は常に存在するため (パフォーマンス キラーとなる削除時に再シーケンスしない限り)、アプリはそれに対処する必要があります。

そして、あなたのアプリはそれを扱っているので、常にそれを扱っているかもしれません.

人工的な主キーが連続している必要がある本当の理由は思いつきません。シーケンシングのギャップは、主キーを実際のデータとして使用する不適切に作成されたクエリを除いて、パフォーマンスに影響しません (おそらく人工キーでそれを行うべきではありません)。

したがって、私のアドバイスは、連続したキーが必要であるという考えから始めるのではなく、連続したキーは必要ないという仮定から始めて、それらが必要であると考える理由を考え出すことです。より良い方法で満足できない理由を思いつくのは難しいと思います。

于 2012-12-29T02:31:19.693 に答える