У меня проблема при получении значения первичного ключа последней вставленной строки в базе данных.
У меня есть таблица с именем wineDetails
, которая содержит более 2000 наименований вин. Я отображаю имена в алфавитном порядке.
Когда я добавляю новое имя вина в таблицу wineDetails
, новый первичный ключ имени вина - 2001 в базе данных, но когда я отображаю названия вин в алфавитном порядке, я получаю значение первичного ключа другого имени вина вместо 2001 года.
Чтобы получить последние вставленные строки первичного кея, я написал код как:
- (void)addWineDetails:(wineDetails *)awineDet
{
sqlite3_stmt *insert_statement;
static char *sql = "INSERT INTO wineDetails (name,regionId,categoryId) VALUES (?,?,?)";
if (sqlite3_prepare_v2(database, sql, -1, &insert_statement, NULL) != SQLITE_OK)
{
NSAssert1(0, @"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database));
}
sqlite3_bind_text(insert_statement, 1, [[awineDet wine_Name]UTF8String] , -1, SQLITE_TRANSIENT);
sqlite3_bind_int(insert_statement, 2,[awineDet region_Id]);
sqlite3_bind_int(insert_statement, 3,[awineDet category_Id]);
int success = sqlite3_step(insert_statement);
sqlite3_finalize(insert_statement);
if (success == SQLITE_ERROR)
{
NSAssert1(0, @"Error: failed to insert into the database with message '%s'.", sqlite3_errmsg(database));
}
else
{
primaryKey = sqlite3_last_insert_rowid(database);
int lastInsertId = sqlite3_last_insert_rowid(database);
wineDetPk = lastInsertId;
printf("\n last insert id in adding:%d",lastInsertId);
printf("\nwineDetPk id in adding:%d",wineDetPk);
}
}
Ребята, пожалуйста, помогите мне выбраться из этого.
Любая помощь будет оценена по достоинству.
Спасибо,
Мониш Кумар.