0

連絡先用の新しいデータベースを作成し、conatctscontract フィールドの contact_id を主キーとして保持しています。私の質問は、誰かが連絡先の行を削除した場合、その連絡先の contact_id が Android システムによって再利用されるかどうかです。もしそうなら、どうすればその連絡先IDがアプリケーションで使用されないようにできますか、またはこの問題に対するより良いアプローチがありますか?

4

2 に答える 2

1

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 にリセットされ、そこから再開され、削除されたギャップが埋められます。

于 2012-12-16T04:47:38.227 に答える
0

組み込みcontactsproviderデータベースを参照している場合、ContactsテーブルとDataテーブルの両方に AUTOINCREMENT の ID があります。
したがって、IDが再利用されるとは思いません。

ここでコードベースを確認できます

于 2012-12-16T05:41:04.707 に答える