Todos os produtos
Search
Central de documentação

Tablestore:Use the atomic counter feature

Última atualização: Jul 03, 2026

Para implementar um contador em sua aplicação online, use o recurso de contador atômico. Defina uma coluna como contador atômico e execute operações de contador atômico nessa coluna.

Pré-requisitos

Observações de uso

  • Implemente contadores atômicos apenas em colunas INTEGER.

  • Se a coluna definida como contador atômico não existir antes da gravação dos dados, o valor padrão será 0. Caso a coluna especificada como contador atômico não seja do tipo INTEGER, ocorrerá um erro OTSParameterInvalid.

  • Atualize o contador atômico com um número positivo ou negativo, mas evite estouro de inteiro. Se houver estouro de inteiro, o sistema retornará um erro OTSParameterInvalid.

  • Por padrão, a resposta à solicitação de atualização de linha não retorna o valor do contador atômico. Configure o retorno do valor atualizado do contador atômico conforme necessário.

  • Não defina uma coluna como contador atômico e a atualize na mesma solicitação. Por exemplo, ao definir a Coluna A como contador atômico, não execute simultaneamente outras operações nessa coluna, como sobrescrita ou exclusão.

  • Envie uma solicitação BatchWriteRow para realizar várias operações de atualização na mesma linha. No entanto, ao executar uma operação de contador atômico, realize apenas uma operação de atualização nessa linha por solicitação BatchWriteRow.

  • Atualize somente o valor da versão mais recente de um contador atômico. Não é possível atualizar o valor de uma versão específica. Após a conclusão da operação de atualização, o sistema insere uma nova versão dos dados no contador atômico da linha.

Sintaxe

/**
 * Update a row of data. 
 * @api
 * @param [] $request The request parameters. 
 * @return [] The response. 
 * @throws OTSClientException The exception that is thrown if a parameter error occurs or the Tablestore server returns a verification error. 
 * @throws OTSServerException The exception that is thrown if the Tablestore server returns an error. 
 */
public function updateRow(array $request);         

Chame updateRow para executar operações de contador atômico. A tabela a seguir lista as operações compatíveis.

Operação

Descrição

update_of_attribute_columns

Defina o tipo de atualização como INCREMENT para incrementar ou decrementar o valor de uma coluna por um inteiro específico. Formato de configuração:

'update_of_attribute_columns'=> array(
    'INCREMENT' => array (     
        array('<column_name>', <value>, ColumnTypeConst::CONST_INTEGER), 
    ),
)

return_content

Retorna o valor atualizado da coluna. Especifique o nome da coluna e defina return_type como ReturnTypeConst::CONST_AFTER_MODIFY. Formato de configuração:

'return_content' => array(
            'return_type' => ReturnTypeConst::CONST_AFTER_MODIFY,
            'return_column_names' => array('<column_name>')
         )

Parâmetros

Parâmetro

Descrição

table_name

Nome da tabela.

column_name

Nome da coluna para execução da operação de contador atômico. Compatível apenas com colunas INTEGER.

value

Valor a incrementar ou decrementar na coluna.

return_content

Informações da coluna retornadas após a operação do contador atômico. Inclui os seguintes parâmetros:

  • return_type: Defina como ReturnTypeConst::CONST_AFTER_MODIFY para retornar o valor atualizado da coluna.

  • return_column_names: Nome da coluna cujo valor atualizado deve ser retornado.

Exemplo

O exemplo a seguir incrementa o valor de uma coluna INTEGER durante a gravação de dados e retorna o valor atualizado.

$request = array (
    // Specify the name of the table. 
    'table_name' => 'MyTable',
    // Set the row existence condition to RowExistenceExpectationConst::CONST_IGNORE, which specifies that the existence of rows is not checked. 
    'condition' => RowExistenceExpectationConst::CONST_IGNORE,
    // Specify the primary key. The number and types of primary key columns that you specify must be the same as the actual number and types of primary key columns in the table. 
    'primary_key' => array ( 
        // The name of the first primary key column is PK0, the data type is INTEGER, and the column value is 123. 
        array('PK0', 123),
        // The name of the second primary key column is PK1, the data type is STRING, and the column value is 'inc'. 
        array('PK1', 'inc')
    ),
    // The attribute column whose value is to be updated. Three operation types are supported: PUT, DELETE, and DELETE_ALL. 
    'update_of_attribute_columns'=> array(
        'INCREMENT' => array (     
            // Specify the column on which the atomic counter operation is to be performed. The column name is attr0, the increment in the column value is 1, and the data type is INTEGER. 
            array('attr0', 1, ColumnTypeConst::CONST_INTEGER), 
        ),
        'PUT' => array(
            array('attr1', 1, ColumnTypeConst::CONST_INTEGER),
        )
    ),
    // Return the column information after the atomic counter operation is performed. 
    'return_content' => array(
        'return_type' => ReturnTypeConst::CONST_AFTER_MODIFY,
        'return_column_names' => array('attr0')
    )
);
$response = $otsClient->updateRow ($request);
print json_encode ($response);