Я использую функцию insertWithOnConflict в Android / SQLite для вставки значений, которые потенциально уже существуют в базе данных.Согласно документации Android, если значение существует, будет возвращен первичный ключ:
Returns
the row ID of the newly inserted row OR the primary key of the existing row if
the input param 'conflictAlgorithm' = CONFLICT_IGNORE OR -1 if any error
Однако, при использовании этой функции, существующий первичный ключ не возвращается, если строка уже существует.Вместо этого он автоматически инкорпорирует первичный ключ и возвращает это значение, даже если в строку для возвращаемого идентификатора не вставлено никаких данных.
Сам вызов функции относительно прост:
name_id = db.insertWithOnConflict("names", null, name_values, SQLiteDatabase.CONFLICT_IGNORE);