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

主キーのリセット (ID としての int)

    bigint の最大値は 9,223,372,036,854,775,807 です。 . 1 日で 8 桁になったとしても、最大値に達するまでに 10 日かかります。それは 2500 万年に相当します。

    それでも列をリセットしたいと仮定すると、最初の質問は次のとおりです。行の順序は重要ですか?つまり、たとえば、時系列または絶対的な順序付けのために、行 1000 が 1100 より前に来るという事実に依存していますか?そうでない場合は、簡単です。列を削除して、再度追加します。やあ、新しい価値観。

    順序を維持する必要がある場合は、もう少し慎重に行う必要があります:

    <オール>
  1. テーブルをロックします。
  2. タイプを変更して、自動インクリメントにならないようにする;
  3. 新しい列を作成します。インデックスを更新すると挿入が遅くなるため、今のところインデックスを作成しないことをお勧めします。
  4. (SQL Server の rownum トリックのような) カウンターをインクリメントするある種のループを使用して、2 番目の値を入力し、元の順序と一致するように挿入を順序付けます。
  5. 古い列を新しい列に置き換えます。
  6. 自動インクリメントと主キーのステータスをリセットします。


    1. codeigniterフレームワークを使用してjqueryでcsvファイルを読み取る方法

    2. 小計とSQL

    3. SQLLIMIT構文エラー

    4. Mysqlレプリケーションの場合にマスターとスレーブのデータベースが異なる場合にMysqlDBを再同期するにはどうすればよいですか?