sql >> データベース >  >> RDS >> Mysql

以前に削除された番号を自動インクリメントで埋める

    その場合、自動インクリメント列を使用する必要はありません。ギャップを埋める場合は、それをint列に設定し、ストアドプロシージャまたは挿入でロジックを処理します。

    編集:

    これはint列なので、数値で並べ替えることができます。 SELECT Ids FROM Table Order By Idsを実行するだけです。 すべてのIDを取得し、返されたデータセットのギャップを確認します。

    これを行うにはおそらくもっとスムーズな方法がありますが、カーソルで結果をループしてINTと比較することができます ループ全体で増分する変数。ギャップを見つけた場合(一致しない)-ループを中断し、そのINTを使用します INSERTとしての値 id。

    私はあなたのためにあなたのコードを書きませんが、それらはあなたを正しい方向に進めるためのいくつかのステップです。それはあなたが扱えるはずの本当に基本的なプログラミングのビットでなければなりません。

    これがお役に立てば幸いです。

    編集#2:

    他の人が指摘しているように、あなたの最善の策はただギャップを残すことです。テーブルに長さの上限があり、IDが1〜30(奇妙)でなければならない場合を除いて、そのままにしておきます。ギャップを埋めるメリットはありません。

    編集#3:

    もう1つ考慮すべき点は、何らかの理由で本当に1〜30を維持する必要がある場合は、行を削除しないでください。列を追加して、各行にアクティブまたは非アクティブのフラグを付け、必要なときに非アクティブの行を更新してから、アクティブとしてフラグを付けます。これは非常にハッキーですが、要件はちょっとハッキーなので...



    1. 外部キー制約は、Oracleのクエリ変換に影響を与えますか?

    2. PHPでMySQLから整数として整数を取得するにはどうすればよいですか?

    3. android生体認証USB指紋認証チュートリアル

    4. データセキュリティガバナンス