AttributeUpdates (héritage) - Amazon DynamoDB

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

AttributeUpdates (héritage)

Note

Dans la mesure du possible, nous vous recommandons d'utiliser les nouveaux paramètres d'expression plutôt que ces paramètres hérités. Pour de plus amples informations, veuillez consulter Utilisation d'expressions dans DynamoDB. Pour obtenir des informations précises sur le nouveau paramètre qui remplace celui-ci, utilisez UpdateExpressionplutôt..

Dans une opération UpdateItem, le paramètre conditionnel hérité AttributeUpdates contient les noms d'attributs à modifier, l'action à effectuer sur chacun d'eux et leur nouvelle valeur. Si vous mettez à jour un attribut de clé d'index pour tous les index figurant dans cette table, le type d'attribut doit correspondre au type de clé d'index défini dans la section AttributesDefinition de la description de la table. Vous pouvez utiliser une opération UpdateItem pour mettre à jour tous les attributs autres que de clé.

Les valeurs d'attribut ne peuvent pas être nulles. Les attributs de type chaîne et binaire doivent avoir une longueur supérieure à zéro. Les attributs de type ensemble ne peuvent pas être vides. Les demandes comprenant des valeurs vides sont rejetées avec une exception ValidationException.

Chaque élément AttributeUpdates se compose d'un nom d'attribut à modifier, ainsi que de ce qui suit :

  • Value : nouvelle valeur, le cas échéant, pour cet attribut.

  • Action : valeur spécifiant comment effectuer la mise à jour. Cette action n'est valide que pour un attribut existant dont le type de données est nombre ou ensemble. N'utilisez pas l'action ADD pour d'autres types de données.

    Si un élément avec la clé primaire spécifiée est trouvé dans la table, les valeurs suivantes exécutent les actions suivantes :

    • PUT - Ajoute l'attribut spécifié à l'élément. Si l'attribut existe déjà, il est remplacé par la nouvelle valeur.

    • DELETE - Si aucune valeur n'est spécifiée pour DELETE, supprime l'attribut et sa valeur. Le type de données de la valeur spécifiée doit correspondre au type de données de la valeur existante.

      Si un ensemble de valeurs est spécifié, ces valeurs sont soustraites de l'ancien ensemble. Par exemple, si la valeur d'attribut était l'ensemble [a,b,c] et si l'action DELETE spécifie [a,c], la valeur d'attribut finale est [b]. La spécification d'un ensemble vide est une erreur.

    • ADD - Ajoute la valeur spécifiée à l'élément si l'attribut n'existe pas encore. Si l'attribut existe, le comportement de l'action ADD dépend du type de données de l'attribut :

      • Si l'attribut existant est un nombre et si Value est également un nombre, Value est ajouté mathématiquement à l'attribut existant. Si Value est un nombre négatif, celui-ci est soustrait de l'attribut existant.

        Note

        Si vous utilisez l'action ADD pour incrémenter ou décrémenter une valeur numérique pour un élément qui n'existe pas avant la mise à jour, DynamoDB utilise 0 comme valeur initiale.

        De même, si vous utilisez l'action ADD pour un élément existant afin d'incrémenter ou de décrémenter une valeur d'attribut qui n'existe pas avant la mise à jour, DynamoDB utilise 0 comme valeur initiale. Par exemple, supposons que l'élément que vous souhaitez mettre à jour ne possède pas d'attribut nommé itemcount, mais que vous décidez malgré tout d'ajouter (ADD) le nombre 3 à cet attribut. DynamoDB crée l'attribut itemcount, définit sa valeur initiale sur 0, puis y ajoute 3. Le résultat sera un nouvel attribut itemcount, avec une valeur de 3.

      • Si le type de données existant est un ensemble, et si Value est également un ensemble, Value est ajouté à l'ensemble existant. Par exemple, si la valeur d'attribut est l'ensemble [1,2] et si l'action ADD spécifie [3], la valeur d'attribut finale est [1,2,3]. Une erreur se produit si une action ADD est spécifiée pour un attribut ensemble et si le type d'attribut spécifié ne correspond pas au type d'ensemble existant.

        Les deux ensembles doivent avoir le même type de données primitif. Par exemple, si le type de données existant est un ensemble de chaînes, Value doit également être un ensemble de chaînes.

    Si aucun élément avec la clé primaire spécifiée n'est trouvé dans la table, les valeurs suivantes exécutent les actions suivantes :

    • PUT - Amène DynamoDB à créer un élément avec la clé primaire spécifiée, puis ajoute l'attribut.

    • DELETE - Rien ne se passe, car des attributs ne peuvent pas être supprimés d'un élément inexistant. L'opération réussit, mais DynamoDB ne crée pas d'élément.

    • ADD – Amène DynamoDB à créer un élément avec la clé primaire et le nombre (ou ensemble de nombres) fournis pour la valeur d'attribut. Les seuls types de données autorisés sont Nombre et Ensemble de nombres.

Si vous fournissez des attributs faisant partie d'une clé d'index, les types de données pour ces attributs doivent correspondre à ceux du schéma dans la définition d'attribut de la table.

Utiliser à UpdateExpressionla place — Exemple

Supposons que vous souhaitez modifier un élément dans la table Music. Vous pouvez utiliser une UpdateItem requête avec un AttributeUpdates paramètre, comme dans cet AWS CLI exemple :

aws dynamodb update-item \ --table-name Music \ --key '{ "SongTitle": {"S":"Call Me Today"}, "Artist": {"S":"No One You Know"} }' \ --attribute-updates '{ "Genre": { "Action": "PUT", "Value": {"S":"Rock"} } }'

Vous pouvez utiliser UpdateExpression à la place :

aws dynamodb update-item \ --table-name Music \ --key '{ "SongTitle": {"S":"Call Me Today"}, "Artist": {"S":"No One You Know"} }' \ --update-expression 'SET Genre = :g' \ --expression-attribute-values '{ ":g": {"S":"Rock"} }'