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) |
|
Les configurations pour la mise à jour d'une ligne. |
|
transactionId (facultatif) |
|
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) |
|
Le nom de la table. |
|
primaryKey (obligatoire) |
|
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 |
|
columnsToUpdate (obligatoire) |
|
Les modifications des colonnes d'attribut. Appelez |
|
condition (facultatif) |
|
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) |
|
Le type de retour. La valeur par défaut est Pour plus d'informations sur la configuration des compteurs atomiques, consultez Utiliser des compteurs atomiques. |
|
returnColumnNames (facultatif) |
|
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 typeINTEGER.
Réponse
UpdateRowResponse contient le champ spécifique à l'opération suivant.
|
Champ |
Type |
Description |
|
|
|
Les colonnes d'attribut mises à jour, obtenues en appelant |
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));