Tous les produits
Search
Centre de documentation

Tablestore:Écrire une ligne

Dernière mise à jour :Aug 08, 2026

Utilisez le SDK Tablestore pour Java pour écrire ou mettre à jour une ligne dans une table de modèle Wide Column.

Prérequis

Installez le SDK Tablestore pour Java et initialisez le client.

Description

Appelez la méthode putRow pour écrire des colonnes d'attribut dans une ligne identifiée par sa clé primaire. Si la ligne existe déjà, Tablestore ajoute ou écrase les versions correspondantes de la colonne d'attribut. Vous pouvez utiliser le paramètre condition pour contrôler l'exécution de l'écriture.

public PutRowResponse putRow(PutRowRequest putRowRequest) throws TableStoreException, ClientException

L'exemple suivant écrit une ligne dans la table put_row_demo avec la colonne de clé primaire id définie sur row1 et la colonne d'attribut col1 définie sur val1.

String tableName = "put_row_demo";

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

RowPutChange rowPutChange = new RowPutChange(tableName, primaryKey);
rowPutChange.addColumn("col1", ColumnValue.fromString("val1"));

client.putRow(new PutRowRequest(rowPutChange));

Paramètres

L'objet PutRowRequest contient les paramètres suivants.

Nom

Type

Description

rowChange (obligatoire)

RowPutChange

Les configurations pour l'écriture d'une ligne.

transactionId (facultatif)

String

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

Pour savoir comment obtenir et utiliser cet ID, consultez la rubrique Utiliser des transactions locales.

Modification de ligne

Le paramètre rowChange est de type RowPutChange 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. Les noms, l'ordre et les types des colonnes de clé primaire doivent correspondre au schéma de la table. Les colonnes de clé primaire prennent en charge les types STRING, INTEGER et BINARY. Définissez une colonne de clé primaire à incrémentation automatique sur PrimaryKeyValue.AUTO_INCREMENT.

columnsToPut (facultatif)

List<Column>

Les colonnes d'attribut à écrire. Appelez plusieurs fois la méthode addColumn pour ajouter les colonnes une par une, ou appelez la méthode addColumns pour ajouter plusieurs colonnes simultanément.

condition (facultatif)

Condition

La condition d'écriture. Par défaut, Tablestore ne vérifie pas si la ligne existe.

Pour savoir comment configurer la condition, consultez la rubrique Utiliser des mises à jour conditionnelles.

returnType (facultatif)

ReturnType

Le type de retour. La valeur par défaut est RT_NONE, qui ne renvoie pas les informations de clé primaire. Définissez ce paramètre sur RT_PK pour renvoyer la clé primaire complète, généralement afin de récupérer une valeur de clé primaire à incrémentation automatique.

Colonnes d'attribut

Chaque élément du tableau rowChange.columnsToPut[] est de type Column et contient les paramètres suivants.

Nom

Type

Description

name (obligatoire)

String

Le nom de la colonne d'attribut.

value (obligatoire)

ColumnValue

La valeur de la colonne d'attribut. Les types pris en charge sont STRING, INTEGER, BINARY, DOUBLE et BOOLEAN.

timestamp (facultatif)

long

Le numéro de version des données. Unité : millisecondes. Si vous ne spécifiez pas ce paramètre, le serveur génère la valeur.

Exemples

Écrire plusieurs colonnes d'attribut

Cet exemple présente les deux approches : appeler la méthode addColumn pour chaque colonne, ou passer une liste List<Column> préparée en un seul appel.

String tableName = "put_row_demo";

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

RowPutChange rowPutChange = new RowPutChange(tableName, primaryKey);

// Option 1: Add columns one at a time with addColumn
rowPutChange.addColumn("name", ColumnValue.fromString("Alice"));
rowPutChange.addColumn("age", ColumnValue.fromLong(30));
rowPutChange.addColumn("active", ColumnValue.fromBoolean(true));

// Option 2: Pass a List<Column> in a single call
List<Column> columns = new ArrayList<>();
columns.add(new Column("score", ColumnValue.fromDouble(95.5)));
columns.add(new Column("city", ColumnValue.fromString("Hangzhou")));
rowPutChange.addColumns(columns);

client.putRow(new PutRowRequest(rowPutChange));

Spécifier la version des données

Utilisez la méthode addColumn(name, value, timestamp) pour définir une version de données personnalisée lors de l'écriture de la colonne.

String tableName = "put_row_demo";

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

RowPutChange rowPutChange = new RowPutChange(tableName, primaryKey);

long timestamp = System.currentTimeMillis();
rowPutChange.addColumn("col1", ColumnValue.fromString("val1"), timestamp);

client.putRow(new PutRowRequest(rowPutChange));

Renvoyer la clé primaire pour une colonne à incrémentation automatique

Pour une colonne de clé primaire à incrémentation automatique, définissez la valeur de la colonne sur l'espace réservé PrimaryKeyValue.AUTO_INCREMENT ; le serveur génère la valeur réelle au moment de l'écriture. Pour récupérer la valeur générée dans la réponse, appelez la méthode setReturnType(ReturnType.RT_PK) avant l'écriture, puis appelez la méthode response.getRow() après le retour de l'opération d'écriture.

String tableName = "put_row_auto_inc_demo";

PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("partition_key", PrimaryKeyValue.fromString("pk1"));
primaryKeyBuilder.addPrimaryKeyColumn("auto_id", PrimaryKeyValue.AUTO_INCREMENT);
PrimaryKey primaryKey = primaryKeyBuilder.build();

RowPutChange rowPutChange = new RowPutChange(tableName, primaryKey);
rowPutChange.addColumn("payload", ColumnValue.fromString("hello"));
rowPutChange.setReturnType(ReturnType.RT_PK);

PutRowResponse response = client.putRow(new PutRowRequest(rowPutChange));
Row returnedRow = response.getRow();
System.out.println("Returned PK: " + returnedRow.getPrimaryKey());