Utilice Tablestore SDK for Java para agregar, modificar o eliminar columnas de atributos en una fila identificada por su clave primaria completa.
Requisitos previos
Instale Tablestore SDK for Java e inicialice el cliente.
Descripción
Llame a updateRow para actualizar una fila identificada por su clave primaria completa. Puede agregar o modificar columnas de atributos, eliminar una versión específica o todas las versiones de una columna, y utilizar contadores atómicos.
public UpdateRowResponse updateRow(UpdateRowRequest updateRowRequest) throws TableStoreException, ClientException
El siguiente ejemplo actualiza la fila row1 en la tabla de datos update_row_demo y establece la columna de atributo col1 en changed_val1.
String tableName = "update_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
RowUpdateChange rowUpdateChange = new RowUpdateChange(tableName, primaryKey);
rowUpdateChange.put("col1", ColumnValue.fromString("changed_val1"));
client.updateRow(new UpdateRowRequest(rowUpdateChange));
Parámetros
UpdateRowRequest contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
rowChange (obligatorio) |
|
La configuración para actualizar una fila. |
|
transactionId (opcional) |
|
El ID de transacción local. Establezca este parámetro solo cuando actualice datos en una transacción local. Para obtener información sobre cómo obtener y usar el ID, consulte Use local transactions. |
Cambio de fila
rowChange es del tipo RowUpdateChange y contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
tableName (obligatorio) |
|
El nombre de la tabla. |
|
primaryKey (obligatorio) |
|
La clave primaria de la fila. Especifique todas las columnas de clave primaria en el mismo orden y con los mismos tipos que el esquema de la tabla. Las columnas de clave primaria admiten los tipos |
|
columnsToUpdate (obligatorio) |
|
Los cambios en las columnas de atributos. Llame a |
|
condition (opcional) |
|
La condición de actualización. De forma predeterminada, Tablestore no comprueba si la fila existe. Para obtener información sobre cómo configurar la condición, consulte Use conditional updates. |
|
returnType (opcional) |
|
El tipo de retorno. El valor predeterminado es Para obtener información sobre cómo configurar contadores atómicos, consulte Use atomic counters. |
|
returnColumnNames (opcional) |
|
Las columnas de atributos cuyos valores actualizados desea devolver. Este parámetro se aplica únicamente a contadores atómicos. |
Métodos de cambio de columnas de atributos
Llame a los siguientes métodos para agregar cambios a columnsToUpdate.
put: Agrega una columna de atributo o escribe una nueva versión. Puede especificar el número de versión de los datos.deleteColumn: Elimina una versión específica de una columna de atributo.deleteColumns: Elimina todas las versiones de una columna de atributo.increment: Incrementa atómicamente una columna de atributo del tipoINTEGER.
Respuesta
UpdateRowResponse contiene el siguiente campo específico de la operación.
|
Campo |
Tipo |
Descripción |
|
|
|
Las columnas de atributos actualizadas, obtenidas al llamar a |
Escenarios
Escribir columnas de atributos con un número de versión específico
Pase un tercer argumento a put para especificar el número de versión (una marca de tiempo en milisegundos) de la columna de atributo. Utilice este enfoque para archivar valores históricos asociados a tiempos de negocio.
String tableName = "update_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
RowUpdateChange rowUpdateChange = new RowUpdateChange(tableName, primaryKey);
// Specify the version number (a millisecond timestamp) as the third argument.
long version = System.currentTimeMillis();
rowUpdateChange.put("col2", ColumnValue.fromString("val2"), version);
client.updateRow(new UpdateRowRequest(rowUpdateChange));
Eliminar una versión específica de una columna de atributo
Utilice deleteColumn para quitar una sola versión de una columna de atributo y mantener intactas todas las demás versiones.
String tableName = "update_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
RowUpdateChange rowUpdateChange = new RowUpdateChange(tableName, primaryKey);
// Delete the col2 value at the specified version (a millisecond timestamp).
rowUpdateChange.deleteColumn("col2", 1747893563831L);
client.updateRow(new UpdateRowRequest(rowUpdateChange));
Eliminar una columna de atributo completa
Utilice deleteColumns para eliminar todas las versiones de una columna de atributo en una sola operación.
String tableName = "update_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
RowUpdateChange rowUpdateChange = new RowUpdateChange(tableName, primaryKey);
// Delete all versions of the col2 attribute column.
rowUpdateChange.deleteColumns("col2");
client.updateRow(new UpdateRowRequest(rowUpdateChange));