Todos os produtos
Search
Central de documentação

Tablestore:Configure atualização condicional

Última atualização: Aug 13, 2026

O recurso de atualização condicional permite atualizar dados em uma tabela apenas se as condições especificadas forem atendidas. Caso contrário, a atualização falha.

Pré-requisitos

Observações de uso

Ao chamar as operações PutRow, UpdateRow, DeleteRow ou BatchWriteRow para atualizar dados, use a atualização condicional para verificar condições de existência de linha e condições baseadas em colunas. A atualização só é bem-sucedida se todas as condições forem atendidas.

A atualização condicional pode ser baseada em condições de existência de linha e em condições baseadas em colunas.

  • As condições de existência de linha incluem IGNORE, EXPECT_EXIST e EXPECT_NOT_EXIST.

    Ao modificar uma tabela de dados, o Tablestore verifica primeiro a condição de existência da linha. Se essa condição não for atendida, a modificação falha e um erro é relatado.

  • As condições baseadas em colunas incluem SingleColumnCondition e CompositeCondition, usadas para determinar se as condições são atendidas com base nos valores de uma ou mais colunas.

    Essas condições suportam os seguintes operadores relacionais: =, !=, >, >=, < e <=. Também aceitam os operadores lógicos NOT, AND e OR. É possível especificar até 10 condições baseadas em colunas para uma atualização condicional.

    • SingleColumnCondition permite comparar uma constante com uma coluna, mas não suporta comparação entre duas colunas ou duas constantes.

    • Operadores lógicos combinam subcondições em CompositeCondition. Essas subcondições podem ser do tipo SingleColumnCondition ou CompositeCondition.

Use a atualização condicional para implementar bloqueio otimista. Ao atualizar uma linha, obtenha o valor de uma coluna específica e defina uma condição de atualização com base nesse valor. Por exemplo, ao alterar o valor da Coluna A para 2, verifique seu valor atual. Neste exemplo, suponha que o valor obtido seja 1. Nesse caso, especifique que a linha só pode ser atualizada se o valor da Coluna A for igual a 1. Se a condição for atendida, a atualização será bem-sucedida. Se outro cliente tiver atualizado a linha anteriormente, a operação falhará.

Parâmetros

Parâmetro

Descrição

RowExistenceExpectation

Condição de existência da linha. Ao modificar uma tabela, o Tablestore verifica essa condição. Se ela não for atendida, a modificação falha e um erro é relatado.

As condições de existência de linha incluem IGNORE, EXPECT_EXIST e EXPECT_NOT_EXIST. No Tablestore, use RowExistenceExpectation_IGNORE para especificar IGNORE, RowExistenceExpectation_EXPECT_EXIST para EXPECT_EXIST e RowExistenceExpectation_EXPECT_NOT_EXIST para EXPECT_NOT_EXIST.

  • IGNORE: Não realiza verificação de existência.

  • EXPECT_EXIST: Espera-se que a linha exista. A condição é atendida se a linha existir; caso contrário, não é atendida.

  • EXPECT_NOT_EXIST: Espera-se que a linha não exista. A condição é atendida se a linha não existir; caso contrário, não é atendida.

columnName

Nome da coluna.

columnValue

Valor de comparação da coluna.

comparator

Operador relacional usado para comparar o valor da coluna. Para informações sobre os tipos de operadores relacionais, consulte ComparatorType.

Os operadores relacionais incluem EQUAL(=), NOT_EQUAL(!=), GREATER_THAN(>), GREATER_EQUAL(>=), LESS_THAN(<) e LESS_EQUAL(<=). No Tablestore, use CT_EQUAL para especificar EQUAL(=), CT_NOT_EQUAL para NOT_EQUAL(!=), CT_GREATER_THAN para GREATER_THAN(>), CT_GREATER_EQUAL para GREATER_EQUAL(>=), CT_LESS_THAN para LESS_THAN(<) e CT_LESS_EQUAL para LESS_EQUAL(<=).

combinator

Operador lógico que combina múltiplas condições. Para informações sobre os tipos de operadores lógicos, consulte LogicalOperator.

Os operadores lógicos incluem NOT, AND e OR. No Tablestore, use LO_NOT para especificar NOT, LO_AND para AND e LO_OR para OR.

O número de subcondições permitidas varia conforme o operador lógico utilizado.

  • Para o operador NOT, especifique apenas uma subcondição.

  • Para os operadores AND ou OR, especifique pelo menos duas subcondições.

passIfMissing

Defina se a verificação condicional deve ser aprovada quando uma coluna não existe na linha. Este parâmetro é do tipo Boolean. O valor padrão é true, indicando que, se a coluna não existir, a verificação é aprovada e a linha atende às condições de atualização.

Se você definir passIfMissing como false e a coluna não existir na linha, a verificação falha e a linha não atende às condições de atualização.

latestVersionOnly

Defina se apenas a versão mais recente do valor deve ser usada na comparação quando uma coluna possui múltiplas versões. Este parâmetro é do tipo Boolean. O valor padrão é true, indicando que, se houver várias versões, apenas a mais recente será considerada.

Se você definir latestVersionOnly como false e a coluna possuir múltiplas versões, todas serão usadas na comparação. Nesse cenário, basta que uma versão atenda à condição para que a verificação seja aprovada e a linha cumpra os requisitos de atualização.

Exemplos

Atualize uma linha com base na chave primária especificada. A atualização será bem-sucedida apenas se a linha existir, o valor da coluna "name" for "john" e o valor da coluna "addr" for "china". Caso contrário, a operação falhará.

   var params = {
    tableName: "sampleTable",
    primaryKey: [{ 'gid': Long.fromNumber(20013) }, { 'uid': Long.fromNumber(20013) }],
    updateOfAttributeColumns: [{ 'PUT': [{ 'col1': 'test6' }] }]
};

// Specify the update conditions. Specify that data can be updated only if the following conditions are met: the specified row exists, the value of the "name" column is "john", and the value of the "addr" column is "china". 
var condition = new TableStore.CompositeCondition(TableStore.LogicalOperator.AND);
condition.addSubCondition(new TableStore.SingleColumnCondition('name', 'john', TableStore.ComparatorType.EQUAL));
condition.addSubCondition(new TableStore.SingleColumnCondition('addr', 'china', TableStore.ComparatorType.EQUAL));

params.condition = new TableStore.Condition(TableStore.RowExistenceExpectation.EXPECT_EXIST, condition);

client.updateRow(params,
    function (err, data) {
        if (err) {
            console.log('error:', err);
            return;
        }
        console.log('success:', data);
    });