Todos os produtos
Search
Central de documentação

:Excluir dados

Última atualização: Jul 03, 2026

O Tablestore oferece a operação DeleteRow para excluir uma única linha de dados e a operação BatchWriteRow para excluir várias linhas simultaneamente.

Observações de uso

Não é possível restaurar dados excluídos. Proceda com cautela.

Pré-requisitos

Instale o Tablestore SDK for Java e inicialize um cliente.

Excluir uma única linha de dados

Use a operação DeleteRow para excluir uma única linha de dados. Se a linha não existir, a tabela de dados permanecerá inalterada.

Parâmetros

Parâmetro

Descrição

tableName

Nome da tabela de dados.

primaryKey

Chave primária da linha. O valor desse parâmetro consiste no nome, tipo e valor de cada coluna de chave primária.

Importante

A quantidade e os tipos das colunas de chave primária especificados devem corresponder exatamente à quantidade e aos tipos reais das colunas de chave primária na tabela.

condition

Condição necessária para executar a operação. Configure uma condição de existência de linha ou baseada em valores de coluna. Para mais informações, consulte Executar atualizações condicionais.

Exemplos

Excluir uma linha de dados

O exemplo a seguir demonstra como excluir uma linha de dados de uma tabela:

private static void deleteRow(SyncClient client, String pkValue) {
    // Construct the primary key. 
    PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
    primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
    PrimaryKey primaryKey = primaryKeyBuilder.build();
    // Specify the name of the data table. 
    RowDeleteChange rowDeleteChange = new RowDeleteChange("<TABLE_NAME>", primaryKey);

    client.deleteRow(new DeleteRowRequest(rowDeleteChange));
}                    

Especificar condições para excluir uma linha de dados

O exemplo a seguir demonstra como excluir uma linha de dados de uma tabela quando a linha existe e o valor da coluna Col0 é maior que 100:

private static void deleteRow(SyncClient client, String pkValue) {
    // Construct the primary key. 
    PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
    primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
    PrimaryKey primaryKey = primaryKeyBuilder.build();
    // Specify the name of the data table. 
    RowDeleteChange rowDeleteChange = new RowDeleteChange("<TABLE_NAME>", primaryKey);

    // Specify conditions for the DeleteRow operation. In this example, a row is deleted only when the row exists and the value of the Col0 column is greater than 100. 
    Condition condition = new Condition(RowExistenceExpectation.EXPECT_EXIST);
    condition.setColumnCondition(new SingleColumnValueCondition("Col0",
            SingleColumnValueCondition.CompareOperator.GREATER_THAN, ColumnValue.fromLong(100)));
    rowDeleteChange.setCondition(condition);

    client.deleteRow(new DeleteRowRequest(rowDeleteChange));
}                   

Excluir várias linhas de dados simultaneamente

  1. Antes de excluir os dados, selecione um método adequado aos seus requisitos de negócio para consultar as informações de chave primária dos dados a serem excluídos.

    • Para excluir dados cujos valores de chave primária estejam dentro de um intervalo específico, chame a operação GetRange para consultar os dados e obter as informações de chave primária. Para mais informações, consulte Ler dados cujos valores de chave primária estão dentro de um intervalo específico.

    • Para excluir dados que atendam a condições específicas de uma tabela com índice de pesquisa, use o índice para consultar os dados e obter as informações de chave primária. Para mais informações, consulte Consulta básica.

    • Para excluir todos os dados de uma tabela, recomenda-se excluir a tabela e criar outra com as mesmas configurações.

      Alternativamente, chame a operação GetRange definindo a chave primária inicial como INF_MIN e a final como INF_MAX para verificar todos os dados da tabela. Assim, você obtém as informações de chave primária de todos os dados. No entanto, essa ação consome muitos recursos de computação. Proceda com cautela.

  2. Chame a operação BatchWriteRow para excluir várias linhas simultaneamente com base nas informações de chave primária. Para mais informações, consulte Gravar dados.

    O exemplo a seguir demonstra como excluir simultaneamente uma linha em que o valor da coluna de chave primária pk é pk de uma tabela e uma linha em que o valor da coluna de chave primária pk1 é pk1 e o valor da coluna de chave primária pk2 é pk2 de outra tabela:

    private static void batchWriteRow(SyncClient client) {    
        BatchWriteRowRequest batchWriteRowRequest = new BatchWriteRowRequest();
    
        // Construct rowDeleteChange1. 
        PrimaryKeyBuilder pk1Builder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        pk1Builder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("pk"));
        // Specify the name of the data table. 
        RowDeleteChange rowDeleteChange1 = new RowDeleteChange("<TABLE_NAME1>", pk1Builder.build());
        // Add rowDeleteChange1 to the code of the batch operation. 
        batchWriteRowRequest.addRowChange(rowDeleteChange1);
    
        // Construct rowDeleteChange2. 
        PrimaryKeyBuilder pk2Builder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        pk2Builder.addPrimaryKeyColumn("pk1", PrimaryKeyValue.fromString("pk1"));
        pk2Builder.addPrimaryKeyColumn("pk2", PrimaryKeyValue.fromString("pk2"));
        // Specify the name of the data table. 
        RowDeleteChange rowDeleteChange2 = new RowDeleteChange("<TABLE_NAME2>", pk2Builder.build());
        // Add rowDeleteChange2 to the code of the batch operation. 
        batchWriteRowRequest.addRowChange(rowDeleteChange2);
    
        BatchWriteRowResponse response = client.batchWriteRow(batchWriteRowRequest);
    
        System.out.println("Whether all operations are successful:" + response.isAllSucceed());
        if (!response.isAllSucceed()) {
            for (BatchWriteRowResponse.RowResult rowResult : response.getFailedRows()) {
                System.out.println("Failed rows:" + batchWriteRowRequest.getRowChange(rowResult.getTableName(), rowResult.getIndex()).getPrimaryKey());
                System.out.println("Cause of failures:" + rowResult.getError());
            }
            /**
             * You can use the createRequestForRetry method to construct another request to retry the operations on failed rows. In this example, only the retry request is constructed. 
             * We recommend that you use the custom retry policy in Tablestore SDKs as the retry method. This feature allows you to retry failed rows after batch operations are performed. After you specify the retry policy, you do not need to add retry code to call the operation. 
             */
            BatchWriteRowRequest retryRequest = batchWriteRowRequest.createRequestForRetry(response.getFailedRows());
        }
    }

Referências

O tempo de vida (TTL) define o período de retenção dos dados. Configure o TTL para uma tabela de dados a fim de excluir automaticamente os dados expirados. Para mais informações, consulte Versões de dados e TTL.