Я пытаюсь предотвратить дублирование записей в моей базе данных sqlite с помощью уникального идентификатора при создании таблицы.Информация, включая первичный ключ, вставляется через некоторые данные json, возвращаемые веб-службой.
Хотя я понимаю, что не следует использовать автоматически сгенерированный первичный ключ, это необходимо для бизнес-модели.
Если случайно веб-служба вернет запись, которая уже существует, вы предполагаете, что она не будет вставлять данные снова, но выдаст ошибку.Это не тот случай.
Кто-нибудь знает способ предотвратить это?
Заявление о создании
CREATE TABLE "Data" ("Id" INTEGER PRIMARY KEY NOT NULL UNIQUE , "DataText" TEXT NOT NULL , "CategoryId" INTEGER NOT NULL )
Введите код
if (sqlite3_open([[self getDatabaseConnection] UTF8String], &database) == SQLITE_OK)
{
const char *sql = "INSERT INTO Data (Id, CategoryId, DataText) Values(?, ?, ?)";
if(sqlite3_prepare_v2(database, sql, -1, &addStatement, NULL) != SQLITE_OK)
{
NSLog(@"Error while creating add statement. '%s'", sqlite3_errmsg(database));
}
else
{
sqlite3_bind_int64(addStatement, 1, dataId);
sqlite3_bind_int64(addStatement, 2, categoryId);
sqlite3_bind_text(addStatement, 3, [dataText UTF8String], -1, SQLITE_TRANSIENT);
if(SQLITE_DONE != sqlite3_step(addStatement))
{
NSLog(@"Error while inserting data. '%s'", sqlite3_errmsg(database), nil);
}
}
//Reset the add statement.
sqlite3_reset(addStatement);
}
sqlite3_close(database);