私はテーブルの主キーとして Oracle シーケンスを使用し、この主キーをマッピングする Java アプリケーションで int を使用しました。顧客がテーブルの最大 int に達していることがわかりました。シーケンスは連続的に増加する可能性があります。しかし、Java int はそれを格納できなくなりました。非常に大きなコストがかかるため、Java コードを int から long に変更したくありません。次に、顧客DBのID列に大きなギャップがたくさんあることがわかりました。これらの不足している ID 番号を再利用する方法はありますか?
DB レベルでこれを行うことができれば、このシーケンスを再編成してこれらの不足している番号を追加できるので、Java コードを変更せずにこれらのギャップを使用できます。それは素晴らしいはずです。
これらの数値を取得した後、ギャップ範囲を見つける関数を作成します。できれば、それらをシーケンス値のプールに割り当てたいので、今後は自動インクリメントを使用せず、数値を使用するだけです割り当てられます。Java コードでは、引き続き findNextNumber を使用してシーケンスを呼び出すことができます。しかし、シーケンスは割り当てた値を返すことができます。無理そうですよね?代替手段はありますか?