In general, you will not modify a secondary database directly. In order to modify a secondary database, you should modify the primary database and simply allow DB to manage the secondary modifications for you.
However, as a convenience, you can delete secondary database records directly. Doing so causes the associated primary key/data pair to be deleted. This in turn causes DB to delete all secondary database records that reference the primary record.
        You can use the 
            
            
            Db::del()
        method to delete a secondary database record. 
        
        
        Note that if your
            secondary database 
             
        contains duplicate records, then deleting a record from the set of
        duplicates causes all of the duplicates to be deleted as well.
        
    
You can delete a secondary database record using the previously described mechanism only if the primary database is opened for write access.
For example:
#include <db_cxx.h>
#include <string.h>
...
Db my_database(NULL, 0); // Primary
Db my_index(NULL, 0);    // Secondary
// Open the primary
my_database.open(NULL,       // Transaction pointer
                 "my_db.db", // On-disk file that holds the database.
                NULL,        // Optional logical database name
                DB_BTREE,    // Database access method
                DB_CREATE,   // Open flags
                0);          // File mode (using defaults)
// Setup the secondary to use sorted duplicates.
// This is often desireable for secondary databases.
my_index.set_flags(DB_DUPSORT);
// Open the secondary
my_index.open(NULL,              // Transaction pointer
              "my_secondary.db", // On-disk file that holds the database.
              NULL,              // Optional logical database name
              DB_BTREE,          // Database access method
              DB_CREATE,         // Open flags.
              0);                // File mode (using defaults)
// Now associate the primary and the secondary
my_database.associate(NULL,          // Txn id
                      &my_index,     // Associated secondary database
                      get_sales_rep, // Callback used for key extraction.
                      0);            // Flags 
// Name to delete
char *search_name = "John Doe";
// Get a search key
Dbt key(search_name, strlen(search_name) + 1);
                      
// Now delete the secondary record. This causes the associated primary
// record to be deleted. If any other secondary databases have secondary
// records referring to the deleted primary record, then those secondary
// records are also deleted.
my_index.del(NULL, &key, 0);