Previous Next JavaScript must be enabled to correctly display this content

## Using API to delete multiple rows

You can use the `MultiDeleteRequest` API and delete more than one row from a NoSQL table.

You can use `MultiDeleteRequest` to delete multiple rows from a table in an atomic operation. The key used may be partial but must contain all of the fields that are in the shard key. A range may be specified to delete a range of keys. As this operation can exceed the maximum amount of data that can be modified in a single operation, a continuation key can be used to continue the operation.

If a table's primary key is <YYYYMM, timestamp> and the its shard key is the YYYYMM, then all records that hit in the same month would be in same shard. It is possible to delete a range of timestamp values for a specific month using `MultiDeleteRequest` class.

See Oracle NoSQL Java SDK API Reference for more details on the various classes and methods.

Download the full code MultiDataOps.java from the examples here.

    //Delete multiple rows from the table
    private static void delMulRows(NoSQLHandle handle,int pinval) throws Exception {
       MapValue key = new MapValue().put("pin", 1234567);
       MultiDeleteRequest multiDelRequest = new MultiDeleteRequest()
              .setKey(key)
              .setTableName(tableName);

       MultiDeleteResult mRes = handle.multiDelete(multiDelRequest);
       System.out.println("MultiDelete result = " + mRes);
    }

    /*delete multiple rows using shard key*/
    delMulRows(handle,1234567);

Note:

Oracle NoSQL Database supports user-defined row metadata. You can annotate actual row data with additional information in a JSON string using the `setRowMetadata()` method. To understand more about the row metadata when you delete multiple rows, see Using row metadata in Write Operations.

You can use `borneo.MultiDeleteRequest` class to perform multiple deletes in a single atomic operation.

See Oracle NoSQL Python SDK API Reference for more details on the various classes and methods.

Download the full code MultiDataOps.py from the examples here.

    #delete multiple rows
    def multirow_delete(handle,table_name,pinval):
       request = MultiDeleteRequest().set_table_name(table_name).set_key({'pin': pinval})
       result = handle.multi_delete(request)
    )

    /*delete multiple rows using shard key*/
    multirow_delete(handle,'examplesAddress',1234567)

You can use `MultiDelete` method to delete multiple rows from a table in a single atomic operation.

See Oracle NoSQL Go SDK API Reference for more details on the various classes and methods.

Download the full code MultiDataOps.go from the examples here.

    //delete multiple rows
    func delMulRows(client *nosqldb.Client, err error, tableName string,pinval int)(){
       shardKey := &types.MapValue{}
       shardKey.Put("pin", pinval)
       multiDelReq := &nosqldb.MultiDeleteRequest{
    		TableName: tableName,
    		Key:       shardKey,
       }
       multiDelRes, err := client.MultiDelete(multiDelReq)
       if err != nil {
          fmt.Printf("failed to delete multiple rows: %v", err)
          return
       }
       fmt.Printf("MultiDelete result=%v\n", multiDelRes)
    }

    /*delete multiple rows using shard key*/
    delMulRows(client, err,tableName,1234567)

You can delete multiple rows having the same shard key in a single atomic operation using the `deleteRange` method.

JavaScript: Download the full code MultiDataOps.js from the examples here.

    //deletes multiple rows
    async function mulRowDel(handle,pinval){
       try {
          /* Unconditional delete, should succeed.*/
          var result = await handle.deleteRange(TABLE_NAME, { pin: pinval });
          /* Expected output: delete succeeded*/
          console.log('delete ' + result.success ? 'succeeded' : 'failed');
       } catch(error) {
          console.error('  Error: ' + error.message);
       }
    }

    /*delete multiple rows using shard key*/
    await mulRowDel(handle,1234567);

TypeScript: Download the full code MultiDataOps.ts from the examples here.

    interface StreamInt {
       acct_Id: Integer;
       profile_name: String;
       account_expiry: TIMESTAMP;
       acct_data: JSON;
    }

    //deletes multiple rows
    async function mulRowDel(handle: NoSQLClient,pinVal: Integer){
       try {
          /* Unconditional delete, should succeed.*/
          var result = await handle.deleteRange<StreamInt>(TABLE_NAME, { pin: pinval });
          /* Expected output: delete succeeded*/
          console.log('delete ' + result.success ? 'succeeded' : 'failed');
       } catch(error) {
          console.error('  Error: ' + error.message);
       }
    }

    /*delete multiple rows using shard key*/
    await mulRowDel(handle,1234567);

You can delete multiple rows having the same shard key in a single atomic operation using `DeleteRangeAsync` method.

Download the full code MultiDataOps.cs from the examples here.

    //delete multiple rows
    private static async Task mulDelRows(NoSQLClient client,int pinval){
       var parKey = new MapValue {["pin"] = pinval};
       var options = new DeleteRangeOptions();
       do
       {
          var result = await client.DeleteRangeAsync(TableName,parKey,options);
          Console.WriteLine($"Deleted {result.DeletedCount} row(s)");
          options.ContinuationKey = result.ContinuationKey;
       } while(options.ContinuationKey != null);
    }

    /*delete multiple rows using shard key*/
    await mulDelRows(client,1234567);