数値 ID と一意のテキストの 2 つの列を持つテーブルがあります。このように作成されました:
String CREATE_MY_TABLE = "CREATE TABLE " + TABLE_TEST + "("
+ KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ KEY_FOO + " TEXT UNIQUE"
+ ")";
db.execSQL(CREATE_MY_TABLE);
KEY_FOO 値を挿入して、それが既にデータベースにある場合、何も起こらないことを望みます。しかし、私が得たのは、IDが常にインクリメントされているということです。新しい行は挿入されません。これは問題ありませんが、ID は自動インクリメントされます。
挿入するために私がやっていることは次のとおりです。
db.insertWithOnConflict(TABLE_TEST , null, values, SQLiteDatabase.CONFLICT_NONE);
私は、、、すべて同じようにしましたCONFLICT_IGNORE
。CONFLICT_ABORT
CONFLICT_ROLLBACK
これが必要な理由は、他のテーブルがこの ID に外部キーを持っているためです。したがって、ID が変更された場合、他のテーブルはどこにもポイントしません。
既存のエントリをそのままにしておくにはどうすればよいでしょうか。