Tous les produits
Search
Centre de documentation

Tablestore:Configurer la mise à jour conditionnelle

Dernière mise à jour :Aug 18, 2026

La fonctionnalité de mise à jour conditionnelle vous permet de mettre à jour les données d'une table uniquement si les conditions spécifiées sont remplies. Si les conditions ne sont pas satisfaites, la mise à jour échoue.

Prérequis

Notes d'utilisation

Lorsque vous appelez les opérations PutRow, UpdateRow, DeleteRow ou BatchWriteRow pour mettre à jour des données, vous pouvez utiliser la mise à jour conditionnelle afin de vérifier les conditions d'existence des lignes et les conditions basées sur les colonnes. La mise à jour aboutit uniquement si ces conditions sont remplies.

La mise à jour conditionnelle s'appuie sur deux types de conditions : les conditions d'existence des lignes et les conditions basées sur les colonnes.

  • Les conditions d'existence des lignes incluent IGNORE, EXPECT_EXIST et EXPECT_NOT_EXIST.

    Lorsque vous modifiez une table de données, Tablestore vérifie d'abord la condition d'existence de la ligne. Si cette condition n'est pas remplie, la modification échoue et une erreur est renvoyée.

  • Les conditions basées sur les colonnes comprennent SingleColumnCondition et CompositeCondition. Elles permettent de déterminer si les conditions sont satisfaites en fonction des valeurs d'une ou plusieurs colonnes.

    Les conditions basées sur les colonnes prennent en charge les opérateurs relationnels suivants : =, !=, >, >=, < et <=. Elles supportent également les opérateurs logiques suivants : NOT, AND et OR. Vous pouvez spécifier jusqu'à 10 conditions basées sur les colonnes lors d'une mise à jour conditionnelle.

    • SingleColumnCondition permet de comparer une constante à une colonne. En revanche, elle ne prend pas en charge la comparaison entre deux colonnes ni entre deux constantes.

    • Les opérateurs logiques servent à combiner des sous-conditions au sein d'une CompositeCondition. Ces sous-conditions peuvent être de type SingleColumnCondition ou CompositeCondition.

Vous pouvez exploiter la mise à jour conditionnelle pour implémenter un verrouillage optimiste. Lors de la mise à jour d'une ligne, vous devez obtenir la valeur d'une colonne spécifique et définir une condition de mise à jour basée sur cette valeur. Par exemple, si vous souhaitez modifier la valeur de la colonne A d'une ligne pour la passer à 2, vous devez d'abord récupérer sa valeur actuelle (supposons qu'elle soit égale à 1). Ensuite, vous spécifiez que la mise à jour ne doit s'effectuer que si la valeur de la colonne A est bien 1. Si la condition est satisfaite, la mise à jour réussit. En revanche, si un autre client a modifié la ligne entre-temps, la mise à jour échoue.

Paramètres

Paramètre

Description

RowExistenceExpectation

Condition d'existence de la ligne. Lors de la modification d'une table, Tablestore vérifie cette condition. Si elle n'est pas remplie, la modification échoue et une erreur est signalée.

Les conditions d'existence des lignes incluent IGNORE, EXPECT_EXIST et EXPECT_NOT_EXIST. Dans Tablestore, RowExistenceExpectation_IGNORE correspond à IGNORE, RowExistenceExpectation_EXPECT_EXIST correspond à EXPECT_EXIST et RowExistenceExpectation_EXPECT_NOT_EXIST correspond à EXPECT_NOT_EXIST.

  • IGNORE : aucune vérification d'existence n'est effectuée.

  • EXPECT_EXIST : la ligne doit exister. Si la ligne existe, la condition est satisfaite. Si la ligne n'existe pas, la condition n'est pas satisfaite.

  • EXPECT_NOT_EXIST : la ligne ne doit pas exister. Si la ligne n'existe pas, la condition est satisfaite. Si la ligne existe, la condition n'est pas satisfaite.

columnName

Nom de la colonne.

columnValue

Valeur de comparaison pour la colonne.

comparator

Opérateur relationnel utilisé pour comparer la valeur de la colonne. Pour connaître les types d'opérateurs relationnels, consultez la rubrique ComparatorType.

Les opérateurs relationnels incluent EQUAL (=), NOT_EQUAL (!=), GREATER_THAN (>), GREATER_EQUAL (>=), LESS_THAN (<) et LESS_EQUAL (<=). Dans Tablestore, CT_EQUAL correspond à EQUAL (=), CT_NOT_EQUAL correspond à NOT_EQUAL (!=), CT_GREATER_THAN correspond à GREATER_THAN (>), CT_GREATER_EQUAL correspond à GREATER_EQUAL (>=), CT_LESS_THAN correspond à LESS_THAN (<) et CT_LESS_EQUAL correspond à LESS_EQUAL (<=).

combinator

Opérateur logique permettant de combiner plusieurs conditions. Pour connaître les types d'opérateurs logiques, consultez la rubrique LogicalOperator.

Les opérateurs logiques incluent NOT, AND et OR. Dans Tablestore, LO_NOT correspond à NOT, LO_AND correspond à AND et LO_OR correspond à OR.

Le nombre de sous-conditions que vous pouvez spécifier dépend de l'opérateur logique utilisé.

  • Si l'opérateur logique est NOT, vous ne pouvez spécifier qu'une seule sous-condition.

  • Si l'opérateur logique est AND ou OR, vous devez spécifier au moins deux sous-conditions.

passIfMissing

Indique si la vérification conditionnelle est considérée comme réussie lorsqu'une colonne n'existe pas dans une ligne. Ce paramètre est de type booléen. La valeur par défaut est true, ce qui signifie que si la colonne n'existe pas dans la ligne, la vérification de la condition est réussie et la ligne satisfait aux conditions de mise à jour.

Si vous définissez le paramètre passIfMissing sur false et que la colonne n'existe pas dans la ligne, la vérification de la condition échoue et la ligne ne satisfait pas aux conditions de mise à jour.

latestVersionOnly

Indique si seule la dernière version de la valeur est utilisée pour la comparaison lorsqu'une colonne possède plusieurs versions de valeurs. Ce paramètre est de type booléen. La valeur par défaut est true, ce qui signifie que si la colonne comporte plusieurs versions de valeurs, seule la dernière version est utilisée pour la comparaison.

Si vous définissez le paramètre latestVersionOnly sur false et que la colonne possède plusieurs versions de valeurs, toutes les versions sont utilisées pour la comparaison. Dans ce cas, si au moins une version satisfait à la condition, la vérification de la condition est réussie et la ligne satisfait aux conditions de mise à jour.

Exemples

Mettez à jour une ligne en fonction de la clé primaire spécifiée. La mise à jour réussit si la ligne spécifiée existe, si la valeur de la colonne « name » est « john » et si la valeur de la colonne « addr » est « china ». Dans le cas contraire, la mise à jour échoue.

   var params = {
    tableName: "sampleTable",
    primaryKey: [{ 'gid': Long.fromNumber(20013) }, { 'uid': Long.fromNumber(20013) }],
    updateOfAttributeColumns: [{ 'PUT': [{ 'col1': 'test6' }] }]
};

// Specify the update conditions. Specify that data can be updated only if the following conditions are met: the specified row exists, the value of the "name" column is "john", and the value of the "addr" column is "china". 
var condition = new TableStore.CompositeCondition(TableStore.LogicalOperator.AND);
condition.addSubCondition(new TableStore.SingleColumnCondition('name', 'john', TableStore.ComparatorType.EQUAL));
condition.addSubCondition(new TableStore.SingleColumnCondition('addr', 'china', TableStore.ComparatorType.EQUAL));

params.condition = new TableStore.Condition(TableStore.RowExistenceExpectation.EXPECT_EXIST, condition);

client.updateRow(params,
    function (err, data) {
        if (err) {
            console.log('error:', err);
            return;
        }
        console.log('success:', data);
    });