Вставка значения в HamsterDB с помощью HAM_OVERWRITE

Если я вставлю значение в HamsterDB база данных с флагом HAM_OVERWRITEКаков эффект, когда ключ еще не существует?

Я отслеживаю самый высокий серийный номер в моей программе и сохраняю его в базе данных HamsterDB:

if (serial > high_serial_) {
high_serial_ = serial;
ham::key key((void*)HIGH_SERIAL_KEY, strlen(HIGH_SERIAL_KEY));
ham::record record((void*)&high_serial_, sizeof(high_serial_));

db.insert(&key, &record, HAM_OVERWRITE);
}

После запуска приложения снова, high_serial_ инициализируется текущим значением, хранящимся в БД:

ham::key key((void*)HIGH_SERIAL_KEY, strlen(HIGH_SERIAL_KEY));
auto record = roll_file_db.find(&key);

Но этот вызов бросает HAM_KEY_NOT_FOUND, документация утверждает, что он будет просто вставлен, если ключ еще не существует. Это не то, что я испытываю, хотя.

0

Решение

Если ключ не существует и вы звоните ham_db_insert(db, txn, key, record, HAM_OVERWRITE) тогда ключ будет вставлен.

Если ключ не существует и вы звоните ham_db_find() тогда вы получите HAM_KEY_NOT_FOUND,

Документация для ham_db_find перечисляет HAM_KEY_NOT_FOUND в качестве возвращаемого значения «если ключ не существует»:
http://hamsterdb.com/public/scripts/html_www/group_ветчина_database.html # ga90dd239b79be2181461bbabc2eee1496

НТН
Christoph

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]