Using BTPDEL

As in the case of B-trees for single valued attributes, BTPDEL must be called for a multivalued B-tree if the data being indexed is deleted or changed. As always, you can delete a B-tree entry simply by calling BTPDEL with the exact same arguments used for BTPINS when the B-tree index was created. However, since relative position numbers identify each multivalue in a B-tree, every multivalue that follows a deleted multivalue must also be deleted and reinserted in the B-tree.

For example, assume item 3602 has five multivalued dates in attribute 7. In the B-tree, the five multivalues are identified by the entries 3602*1, 3602*2, 3602*3, 3602*4 and 3602*5. If the third date is deleted from attribute 7 in item 3602, BTPDEL must be called as usual to delete its entry from the B-tree. However, BTPDEL must also be called to delete 3602*4 and 3602*5, then BTPINS must be called to reinsert those multivalues in the B-tree as 3602*3 and 3602*4, since once the third multivalue is deleted, the following multivalues change position in attribute 7 and now occupy positions three and four instead of four and five. Similarly, any time a new multivalue is inserted in a multivalued list, all multivalues after the new multivalue will increment their position in the list by one, so BTPDEL must be called to delete the old multivalue numbers from the B-tree, and BTPINS must then be used to reinsert the B-tree entries using the new multivalue position numbers.