2011-08-03 6 views

答えて

2

SQLite自動インクリメントフィールドは永久にインクリメントされます。削除された値は置き換えられません。可能な限り最大値が存在する場合にのみ、削除された値が置き換えられます。thisを参照してください。あなたが達成しようとしていることは、自動インクリメントフィールドを使っては不可能です。あなたはそれをプログラム的に行う必要があります。

+0

私はこのフィールドをプログラム的に変更することはできますか? – 1Programmer

+0

あなたcan.justを挿入文に入れてください – Rasel

+0

私はこの最終的な解決策だと思います! – 1Programmer

0

我々は自動インクリメントである主を持っている場合、値は、すべての既存のエントリを削除しても同じにはなりません。それは最後の挿入時に停止したところから続行されます。プライマリキーを1から再び開始する場合は、に切り捨てるか、&を削除してテーブルを再作成する必要があります。

SQLite "truncate"コマンドが無効です。あなたは、deleteコマンドには「どこで」句がないことを確認してください1から開始する主キーのカウントをリセットすると「真空テーブル名」「テーブル名から削除」を使用することができます。

+0

私は "vacuum tablename"を使用しますが、影響はありません!!私が "tablenameから削除"を使用すると、私のテーブルは削除されません。 – 1Programmer

+0

"tablenameから削除"は、テーブル内のすべてのエントリのみを削除します。 –

+0

私はこれを使ったが、役に立たなかった! – 1Programmer

1

自動インクリメントを使用する代わりに、整数プライマリキーを使用しても問題ありません。行が1つずつ削除されても、次の増分が正しく行われます。整数の主キーフィールドを空のままにすると、行の最大値が取得され、1が追加されます(max(value)+1のようになります)。それは私のためにうまく動作します。

関連する問題