Todos los productos
Search
Centro de documentos

Tablestore:Uso de contadores atómicos

Última actualización: Sep 03, 2026

El Tablestore SDK for Java incrementa o decrementa atómicamente una columna de atributo de tipo entero por fila y puede devolver el valor actualizado en la misma solicitud.

Requisitos previos

Instale Tablestore SDK for Java e inicialice el cliente.

Descripción

Llame a increment(Column) para actualizar atómicamente la columna de enteros especificada. Un valor positivo incrementa el contador y uno negativo lo decrementa. Tablestore garantiza la atomicidad por fila y escribe una nueva versión de los datos después de la actualización. Para obtener el valor actualizado en la misma solicitud, llame a addReturnColumn(String) y establezca returnType como RT_AFTER_MODIFY.

public UpdateRowResponse updateRow(UpdateRowRequest updateRowRequest) throws TableStoreException, ClientException
public RowUpdateChange increment(Column column)
public void addReturnColumn(String columnName)
public void setReturnType(ReturnType returnType)

En el ejemplo a continuación se incrementa en 10 la columna price de la fila con clave principal pk0 en la tabla counter_demo y se lee el valor actualizado en la misma solicitud.

PrimaryKey primaryKey = PrimaryKeyBuilder.createPrimaryKeyBuilder()
        .addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("pk0"))
        .build();

RowUpdateChange rowUpdateChange = new RowUpdateChange("counter_demo", primaryKey);

// Increment the price column by 10 (use a negative value to decrement)
rowUpdateChange.increment(new Column("price", ColumnValue.fromLong(10)));

// Return the updated column value in the same request
rowUpdateChange.addReturnColumn("price");
rowUpdateChange.setReturnType(ReturnType.RT_AFTER_MODIFY);

UpdateRowResponse response = client.updateRow(new UpdateRowRequest(rowUpdateChange));
Row row = response.getRow();
System.out.println("Updated price: " + row.getLatestColumn("price").getValue().asLong());

Parámetros

Configuración de la solicitud

UpdateRowRequest contiene los parámetros a continuación.

Nombre

Tipo

Descripción

rowChange (obligatorio)

RowUpdateChange

La configuración de actualización de una sola fila.

transactionId (opcional)

String

El ID de la transacción local. Especifique este parámetro solo cuando ejecute la operación de contador atómico dentro de una transacción local.

Para obtener información sobre cómo obtener y usar el ID, consulte Use local transactions.

Configuración de actualización de fila

El parámetro rowChange de UpdateRowRequest es del tipo RowUpdateChange.

Nombre

Tipo

Descripción

tableName (obligatorio)

String

El nombre de la tabla de datos.

primaryKey (obligatorio)

PrimaryKey

La clave principal de la fila destino.

columnsToUpdate (obligatorio)

List<Pair<Column, Type>>

Las columnas de atributos por actualizar. Llame a increment(Column) para agregar una operación de contador atómico.

condition (opcional)

Condition

La configuración de actualización condicional. La operación de contador atómico se ejecuta solo si la fila cumple la condición.

Para obtener información sobre cómo configurar la condición, consulte Use conditional updates.

returnType (opcional)

ReturnType

El tipo de retorno. Valor predeterminado: RT_NONE. Para devolver el valor actualizado, establezca este parámetro como RT_AFTER_MODIFY.

returnColumnNames (opcional)

Set<String>

Las columnas de contador atómico cuyos valores actualizados se devuelven. Agregue nombres de columna mediante addReturnColumn() y utilice este parámetro junto con RT_AFTER_MODIFY.

Columna de contador

Cada elemento agregado a UpdateRowRequest.rowChange.columnsToUpdate mediante increment() contiene un objeto Column.

Nombre

Tipo

Descripción

name (obligatorio)

String

El nombre de la columna de atributo donde se ejecutará la operación de contador atómico.

value (obligatorio)

ColumnValue

El incremento de tipo entero. Un valor positivo incrementa el contador y uno negativo lo decrementa. El resultado no debe desbordarse. Si la columna destino no existe, su valor inicial se considera 0.

Respuesta

Nombre

Tipo

Descripción

row

Row

Si se especifica RT_AFTER_MODIFY, este campo contiene los valores actualizados de las columnas de contador atómico agregadas mediante addReturnColumn(). Llame a getRow() para obtener el valor.

Límites

  • Las operaciones de contador atómico solo admiten columnas de tipo entero. Si la columna existe pero no es de tipo entero, la operación devuelve el error OTSParameterInvalid.

  • Las operaciones de contador atómico se aplican únicamente a la versión más reciente y no aceptan una marca de tiempo especificada por el usuario.

  • En una misma solicitud de actualización, no es posible combinar una operación de contador atómico con otras operaciones en la misma columna, como sobrescritura o eliminación.

  • En una solicitud BatchWriteRow, una fila con una operación de contador atómico solo puede aparecer una vez.

Importante

Las operaciones de contador atómico pueden fallar debido a tiempos de espera de red o errores del sistema. Un reintento podría aplicar el incremento dos veces, lo que dejaría el contador con un valor mayor (o menor) al previsto. Para evitar conteos duplicados, utilice conditional update para actualizar el valor según su estado actual.