連絡先用の新しいデータベースを作成し、conatctscontract フィールドの contact_id を主キーとして保持しています。私の質問は、誰かが連絡先の行を削除した場合、その連絡先の contact_id が Android システムによって再利用されるかどうかです。もしそうなら、どうすればその連絡先IDがアプリケーションで使用されないようにできますか、またはこの問題に対するより良いアプローチがありますか?
2 に答える
MySQLを使用していると仮定しています。データベース システムは、contact_id プライマリ キーを auto_increments します。行が削除されると、その ID は既に「使用」されており、行自体が削除されていても、いわば「使用済み」としてデータベースに格納されます。auto_increment の開始点をリセットしない限り、そのままの状態が続きます (構文は次のようになります)。
ALTER TABLE contact AUTO_INCREMENT = 0;
そのテーブルのauto_increment設定をリセットしない限り、auto_increment機能を使用すると、削除されたcontact_idは再利用されません(私の知る限り)。データベースに格納されている最大の ID からのみ続行されます。
編集:私が間違っていなければ、auto_increment を使用する列は、最新の「auto_incremented」番号を格納する特別なデータベース統計テーブル (使用できませんが、データベースから自動的に格納されます) で使用されます。上記の構文を使用すると、auto_increment が 0 にリセットされ、そこから再開され、削除されたギャップが埋められます。
組み込みcontactsprovider
データベースを参照している場合、Contacts
テーブルとData
テーブルの両方に AUTOINCREMENT の ID があります。
したがって、IDが再利用されるとは思いません。
ここでコードベースを確認できます