1つのテーブルには、自動インクリメントの主キーのカラムがあります。autoincrementカラムはSQLiteテーブルの最後の値を覚えています
問題は、このシナリオである:行が挿入され
- それら4その後
- は新しい行を挿入し、自動インクリメント列の値が
5
この自動インクリメント列の値を1
にするにはどうすればよいですか?
1つのテーブルには、自動インクリメントの主キーのカラムがあります。autoincrementカラムはSQLiteテーブルの最後の値を覚えています
問題は、このシナリオである:行が挿入され
5
この自動インクリメント列の値を1
にするにはどうすればよいですか?
SQLite自動インクリメントフィールドは永久にインクリメントされます。削除された値は置き換えられません。可能な限り最大値が存在する場合にのみ、削除された値が置き換えられます。thisを参照してください。あなたが達成しようとしていることは、自動インクリメントフィールドを使っては不可能です。あなたはそれをプログラム的に行う必要があります。
我々は自動インクリメントである主を持っている場合、値は、すべての既存のエントリを削除しても同じにはなりません。それは最後の挿入時に停止したところから続行されます。プライマリキーを1から再び開始する場合は、をに切り捨てるか、&を削除してテーブルを再作成する必要があります。
SQLite "truncate"コマンドが無効です。あなたは、deleteコマンドには「どこで」句がないことを確認してください1から開始する主キーのカウントをリセットすると「真空テーブル名」「テーブル名から削除」を使用することができます。
私は "vacuum tablename"を使用しますが、影響はありません!!私が "tablenameから削除"を使用すると、私のテーブルは削除されません。 – 1Programmer
"tablenameから削除"は、テーブル内のすべてのエントリのみを削除します。 –
私はこれを使ったが、役に立たなかった! – 1Programmer
自動インクリメントを使用する代わりに、整数プライマリキーを使用しても問題ありません。行が1つずつ削除されても、次の増分が正しく行われます。整数の主キーフィールドを空のままにすると、行の最大値が取得され、1
が追加されます(max(value)+1
のようになります)。それは私のためにうまく動作します。
私はこのフィールドをプログラム的に変更することはできますか? – 1Programmer
あなたcan.justを挿入文に入れてください – Rasel
私はこの最終的な解決策だと思います! – 1Programmer