|
|
Db::put |
#include <db_cxx.h>int Db::put(DbTxn *txnid, Dbt *key, Dbt *data, u_int32_t flags);
The Db::put method stores key/data pairs in the database. The default behavior of the Db::put function is to enter the new key/data pair, replacing any previously existing key if duplicates are disallowed, or adding a duplicate data item if duplicates are allowed. If the database supports duplicates, the Db::put method adds the new data value at the end of the duplicate set. If the database supports sorted duplicates, the new data value is inserted at the correct sorted location.
Unless otherwise specified, the Db::put method either returns a non-zero error value or throws an exception that encapsulates a non-zero error value on failure, and returns 0 on success.
There is a minor behavioral difference between the Recno and Queue access methods for the DB_APPEND flag. If a transaction enclosing a Db::put operation with the DB_APPEND flag aborts, the record number may be decremented (and later reallocated by a subsequent DB_APPEND operation) by the Recno access method, but will not be decremented or reallocated by the Queue access method.
The DB_NODUPDATA flag may only be specified if the underlying database has been configured to support sorted duplicates. The DB_NODUPDATA flag may not be specified to the Queue or Recno access methods.
The Db::put method will return DB_KEYEXIST if DB_NODUPDATA is set and the key/data pair already appears in the database.
The Db::put method will return DB_KEYEXIST if DB_NOOVERWRITE is set and the key already appears in the database.
The Db::put method may fail and throw DbException, encapsulating one of the following non-zero errors, or return one of the following non-zero errors:
If a transactional database environment operation was selected to resolve a deadlock, the Db::put method will fail and either return DB_LOCK_DEADLOCK or throw a DbDeadlockException exception.
If a Berkeley DB Concurrent Data Store database environment configured for lock timeouts was unable to grant a lock in the allowed time, the Db::put method will fail and either return DB_LOCK_NOTGRANTED or throw a DbLockNotGrantedException exception.
Copyright (c) 1996-2005 Sleepycat Software, Inc. - All rights reserved.