Tous les produits
Search
Centre de documentation

Tablestore:Update a row

Dernière mise à jour :Aug 20, 2026

Utilisez le SDK Tablestore pour Java pour ajouter, modifier ou supprimer des colonnes d'attribut dans une ligne identifiée par sa clé primaire complète.

Prérequis

Installez le SDK Tablestore pour Java et initialisez le client.

Description

Appelez updateRow pour mettre à jour une ligne identifiée par sa clé primaire complète. Vous pouvez ajouter ou modifier des colonnes d'attribut, supprimer une version spécifique ou toutes les versions d'une colonne, et utiliser des compteurs atomiques.

public UpdateRowResponse updateRow(UpdateRowRequest updateRowRequest) throws TableStoreException, ClientException

L'exemple suivant met à jour la ligne row1 dans la table de données update_row_demo en définissant la colonne d'attribut col1 sur 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));

Paramètres

UpdateRowRequest contient les paramètres suivants.

Nom

Type

Description

rowChange (obligatoire)

RowUpdateChange

Les configurations pour la mise à jour d'une ligne.

transactionId (facultatif)

String

L'ID de transaction locale. Définissez ce paramètre uniquement lorsque vous mettez à jour des données dans une transaction locale.

Pour plus d'informations sur l'obtention et l'utilisation de l'ID, consultez Utiliser des transactions locales.

Modification de ligne

rowChange est de type RowUpdateChange et contient les paramètres suivants.

Nom

Type

Description

tableName (obligatoire)

String

Le nom de la table.

primaryKey (obligatoire)

PrimaryKey

La clé primaire de la ligne. Spécifiez toutes les colonnes de clé primaire dans le même ordre et avec les mêmes types que le schéma de la table. Les colonnes de clé primaire prennent en charge les types STRING, INTEGER et BINARY.

columnsToUpdate (obligatoire)

List<Pair<Column, RowUpdateChange.Type>>

Les modifications des colonnes d'attribut. Appelez put, deleteColumn, deleteColumns ou increment pour ajouter une modification.

condition (facultatif)

Condition

La condition de mise à jour. Par défaut, Tablestore ne vérifie pas si la ligne existe.

Pour plus d'informations sur la configuration de la condition, consultez Utiliser des mises à jour conditionnelles.

returnType (facultatif)

ReturnType

Le type de retour. La valeur par défaut est RT_NONE. Pour les compteurs atomiques, définissez ce paramètre sur RT_AFTER_MODIFY afin de renvoyer les valeurs de colonne mises à jour.

Pour plus d'informations sur la configuration des compteurs atomiques, consultez Utiliser des compteurs atomiques.

returnColumnNames (facultatif)

Set<String>

Les colonnes d'attribut dont vous souhaitez renvoyer les valeurs mises à jour. Ce paramètre s'applique uniquement aux compteurs atomiques.

Méthodes de modification des colonnes d'attribut

Appelez les méthodes suivantes pour ajouter des modifications à columnsToUpdate.

  • put : Ajoute une colonne d'attribut ou écrit une nouvelle version. Vous pouvez spécifier le numéro de version des données.

  • deleteColumn : Supprime une version spécifiée d'une colonne d'attribut.

  • deleteColumns : Supprime toutes les versions d'une colonne d'attribut.

  • increment : Incrémente de manière atomique une colonne d'attribut de type INTEGER.

Réponse

UpdateRowResponse contient le champ spécifique à l'opération suivant.

Champ

Type

Description

row

Row

Les colonnes d'attribut mises à jour, obtenues en appelant getRow. Ce champ est renvoyé uniquement lorsque returnType est défini sur RT_AFTER_MODIFY.

Scénarios

Écrire des colonnes d'attribut avec un numéro de version spécifié

Passez un troisième argument à put pour spécifier le numéro de version (un horodatage en millisecondes) de la colonne d'attribut. Utilisez cette approche pour archiver des valeurs historiques indexées par l'heure métier.

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));

Supprimer une version spécifiée d'une colonne d'attribut

Utilisez deleteColumn pour supprimer une seule version d'une colonne d'attribut tout en conservant intactes toutes les autres versions.

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));

Supprimer une colonne d'attribut entière

Utilisez deleteColumns pour supprimer chaque version d'une colonne d'attribut en une seule opération.

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));