#include <db.h> int DBcursor->del(DBC *DBcursor, u_int32_t flags);
The DBcursor->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 DBcursor->del()
method will return DB_KEYEMPTY if
the element has already been deleted. The DBcursor->del()
method returns a non-zero error value on failure and 0 on success.
The flags parameter must be set to 0 or one of the following values:
The DBcursor->del()
method may fail and 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 Berkeley DB Concurrent Data Store database environment configured for lock timeouts was unable to grant a lock in the allowed time.
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
return DB_REP_HANDLE_DEAD
.
The application will need to discard the handle and open a new one in order to
continue processing.
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 DB_ENV->open().