Use o Tablestore SDK for Java para adicionar, modificar ou excluir colunas de atributo em uma linha identificada pela chave primária completa.
Pré-requisitos
Instale o Tablestore SDK for Java e inicialize o cliente.
Descrição
Chame updateRow para atualizar uma linha identificada pela chave primária completa. Você pode adicionar ou modificar colunas de atributo, excluir uma versão específica ou todas as versões de uma coluna e usar contadores atômicos.
public UpdateRowResponse updateRow(UpdateRowRequest updateRowRequest) throws TableStoreException, ClientException
O exemplo a seguir atualiza a linha row1 na tabela de dados update_row_demo, definindo a coluna de atributo col1 como 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 contém os seguintes parâmetros:
|
Nome |
Tipo |
Descrição |
|
rowChange (obrigatório) |
|
Configurações para atualizar a linha. |
|
transactionId (opcional) |
|
ID da transação local. Defina este parâmetro apenas ao atualizar dados em uma transação local. Para obter informações sobre como obter e usar o ID, consulte Use local transactions. |
Alteração de linha
rowChange é do tipo RowUpdateChange e contém os seguintes parâmetros:
|
Nome |
Tipo |
Descrição |
|
tableName (obrigatório) |
|
Nome da tabela. |
|
primaryKey (obrigatório) |
|
Chave primária da linha. Especifique todas as colunas de chave primária na mesma ordem e com os mesmos tipos do esquema da tabela. As colunas de chave primária aceitam os tipos |
|
columnsToUpdate (obrigatório) |
|
Alterações nas colunas de atributo. Chame |
|
condition (opcional) |
|
Condição de atualização. Por padrão, o Tablestore não verifica se a linha existe. Para saber como configurar a condição, consulte Use conditional updates. |
|
returnType (opcional) |
|
Tipo de retorno. O valor padrão é Para obter detalhes sobre a configuração de contadores atômicos, consulte Use atomic counters. |
|
returnColumnNames (opcional) |
|
Colunas de atributo cujos valores atualizados você deseja retornar. Este parâmetro aplica-se somente a contadores atômicos. |
Métodos de alteração de coluna de atributo
Chame os métodos a seguir para adicionar alterações a columnsToUpdate:
put: Adiciona uma coluna de atributo ou grava uma nova versão. Permite especificar o número da versão dos dados.deleteColumn: Exclui uma versão específica de uma coluna de atributo.deleteColumns: Exclui todas as versões de uma coluna de atributo.increment: Incrementa atomicamente uma coluna de atributo do tipoINTEGER.
Resposta
UpdateRowResponse contém o seguinte campo específico da operação:
|
Campo |
Tipo |
Descrição |
|
|
|
Colunas de atributo atualizadas, obtidas pela chamada a |
Cenários
Gravar colunas de atributo com um número de versão especificado
Passe um terceiro argumento para put para especificar o número da versão (um timestamp em milissegundos) da coluna de atributo. Use essa abordagem para arquivar valores históricos associados ao tempo de negócio.
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));
Excluir uma versão específica de uma coluna de atributo
Use deleteColumn para remover uma única versão de uma coluna de atributo e manter as demais versões intactas.
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));
Excluir uma coluna de atributo inteira
Use deleteColumns para excluir todas as versões de uma coluna de atributo em uma única operação.
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));