1

いくつかのチュートリアルに従って、iOS アプリで SQLite DB を作成することができました。私は当初、主キーに依存することを期待していました。当時、SQLite で主キーを削除したり再度作成したりすることが不可能であることを知りませんでしたが、今ではアプリが巨大になりました。それを機能させるには、主キーを「順序付け」したままにする必要があります。

私は演習としてタスク マネージャーを開発しており、DB から TableView にデータを直接ロードしています。行を削除するときは、主キー インデックスを修正する必要があります。

現在、行を削除すると次のようになります。

ID TXT STAT
1 some_text 1
2 some_text 1
4 some_text 1

行を削除した後の主キーIDが数値をジャンプしていることがわかりますが、どうすれば 1 2 3 などにすることができますか?

あなたが提示したソリューションが多くのリソースを浪費するかどうかは本当に気にしません.

ありがとうございました。

4

1 に答える 1

2

まず、使用されているIDよりも大きいオフセットですべてのIDを増やします。

UPDATE mytab SET ID = ID + 1000

次に、IDをこれまでのレコード数に設定します。

UPDATE mytab SET ID = (SELECT COUNT(*) FROM mytab t2 WHERE t2.ID <= mytab.ID)

(最初の理由は、UPDATEあるレコードの新しいIDが別のレコードの古いIDと同じになる競合を回避するためです。)

于 2012-09-17T17:44:36.617 に答える