如果我使用 flag 将值插入到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_
将使用存储在 DB 中的当前值进行初始化:
ham::key key((void*)HIGH_SERIAL_KEY, strlen(HIGH_SERIAL_KEY));
auto record = roll_file_db.find(&key);
但是这个电话是扔的HAM_KEY_NOT_FOUND
。文档指出,如果密钥不存在,它将简单地插入。这不是我正在经历的。