#include <db_cxx.h> int Dbc::del(u_int32_t flags);
The Dbc::del()
method deletes the key/data pair to which the
cursor refers.
When called on a cursor opened on a database that has been made into a secondary index using the Db::associate() method, the Db::del() method deletes the key/data pair from the primary database and all secondary indices.
The cursor position is unchanged after a delete, and subsequent calls to cursor functions expecting the cursor to refer to an existing key will fail.
The Dbc::del()
method will return DB_KEYEMPTY if
the element has already been deleted. The Dbc::del()
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.
The flags parameter must be set to 0 or one of the following values:
The Dbc::del()
method may fail and throw a DbException
exception, encapsulating one of the following non-zero errors, or return one
of the following non-zero errors:
A foreign key constraint violation has occurred. This can be caused by one of two things:
An attempt was made to add a record to a constrained database, and the key used for that record does not exist in the foreign key database.
DB_FOREIGN_ABORT was declared for a foreign key database, and then subsequently a record was deleted from the foreign key database without first removing it from the constrained secondary database.
A transactional database environment operation was selected to resolve a deadlock.
DbDeadlockException is thrown if
your Berkeley DB API is configured to throw exceptions.
Otherwise, DB_LOCK_DEADLOCK
is returned.
A Berkeley DB Concurrent Data Store database environment configured for lock timeouts was unable to grant a lock in the allowed time.
You attempted to open a database handle that is configured for no waiting exclusive locking, but the exclusive lock could not be immediately obtained. See Db::set_lk_exclusive() for more information.
DbLockNotGrantedException is thrown if
your Berkeley DB API is configured to throw exceptions.
Otherwise, DB_LOCK_NOTGRANTED
is returned.
When a client synchronizes with the master, it is possible for committed
transactions to be rolled back. This invalidates all the database and cursor
handles opened in the replication environment. Once this occurs, an attempt to use
such a handle will
throw a DbRepHandleDeadException (if
your application is configured to throw exceptions), or
return DB_REP_HANDLE_DEAD
.
The application will need to discard the handle and open a new one in order to
continue processing.
The operation was blocked by client/master synchronization.
DbDeadlockException is thrown if
your Berkeley DB API is configured to throw exceptions.
Otherwise, DB_REP_LOCKOUT
is returned.
If the cursor has not been initialized; or if an invalid flag value or parameter was specified.
Write attempted on read-only cursor when the DB_INIT_CDB flag was specified to DbEnv::open() .