SQLite: предотвращать дублирование

Я хотел бы создать таблицу для хранения настроек устройства. Таблица состоит из трех строк: id, имя_параметра и значение_параметра.

Таблица была создана путем выполнения следующего оператора запроса:

DATABASE_CREATE = "create table DATABASE_TABLE (KEY_ID INTEGER PRIMARY KEY AUTOINCREMENT, KEY_NAME INTEGER not null, VALUE TEXT not null);

и затем строки сохраняются путем выполнения следующего метода:

private long insertRow(int rowParameter, String rowValue, SQLiteDatabase db){
    long res = -1;
    ContentValues settingsParameterValues = new ContentValues();
    settingsParameterValues.put(KEY_NAME, rowParameter);
    settingsParameterValues.put(VALUE, rowValue);
    if(db != null){
        res = db.insert(DATABASE_TABLE, null, settingsParameterValues);
    }
    return res;
}

При создании базы данных сохраняются значения по умолчанию:

@Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(DATABASE_CREATE);
        insertRow(PRIVACY_LEVEL_ROW_INDEX, "0", db);
        insertRow(STREAM_TITLE_ROW_INDEX, "untitled", db);
        insertRow(STREAM_TAGS_ROW_INDEX, "", db);
    }

Однако проблема с методом insertRow () состоит в том, что он не может предотвратить дублирование записей.

Кто-нибудь знает, как предотвратить дублирование записей в этом случае?

Ответы на вопрос(4)

втоматически предотвратит повторяющиеся записи, и это практически единственный безопасный для параллелизма способ сделать это!

Кроме того, не забывайте о CHECK CONSTRAINT, который может быть более полезным, если вам нужно определить более сложные правила для данных в ваших таблицах.

Если вы пытаетесь предотвратить кодирование, вам нужно сделать SELECT и посмотреть, существует ли уже строка.

Если вы пытаетесь предотвратить его из базы данных, вам нужно добавить ограничение UNIQUE для каждой строки, для которой вы не хотите разрешать дубликаты.

Решение Вопроса

Вы можете использовать ограничение столбцаUNIQUE.

The UNIQUE constraint causes an unique index to be created on the specified columns.

parameter_name.

Ваш ответ на вопрос