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

シーケンス番号をリセットして連続させるにはどうすればよいですか?

    フィールドが主キーの場合...

    ...次に、この質問の他の場所で述べられているように、IDを変更するべきではありません。 IDはすでに一意であり、再利用する必要も、再利用する必要もありません。

    さて、それは言った...

    それ以外の場合...

    異なるを持っている可能性は十分にあります 一部のアプリケーション定義の順序付けのフィールド(つまり、PK)。この順序が他のフィールドに固有のものでない限り(たとえば、ユーザー定義の場合)、これに問題はありません。

    (一時的な)auto_incrementを使用してテーブルを再作成できます フィールドをクリックしてから、auto_incrementを削除します その後。

    UPDATEに誘惑されます 昇順で増分変数を適用します。

    SET @i = 0;
    UPDATE `table`
       SET `myOrderCol` = @i:[email protected]+1
     ORDER BY `myOrderCol` ASC;
    

    これを毎回行うのはかなり無駄に思えます アイテムを削除しますが、残念ながら、この手動注文アプローチでは、列の整合性を維持したい場合にできることはそれほど多くありません。

    myOrderColでエントリを削除した後など、負荷を減らすことができます。 たとえば、5に等しい :

    SET @i = 5;
    UPDATE `table`
       SET `myOrderCol` = @i:[email protected]+1
     WHERE `myOrderCol` > 5
     ORDER BY `myOrderCol` ASC;
    

    これにより、次のすべての値が1つ「シャッフル」されます。



    1. C#コードからSQL Serverストアドプロシージャにステップインするにはどうすればよいですか?

    2. テーブル内のすべての列を一覧表示するにはどうすればよいですか?

    3. Integrated Security=TrueとIntegratedSecurity=SSPIの違いは何ですか?

    4. SQLで月番号を月名関数に変換する