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.
UpdateItem
Important
This section refers to API version 2011-12-05,
which is deprecated and should not be used for new
applications.
Pour une documentation sur l'API de bas niveau actuelle, consultez la Référence d'API Amazon DynamoDB.
Description
Modifie les attributs d'un élément existant. Vous pouvez effectuer une mise à jour conditionnelle (insérer une nouvelle paire nom-valeur d'attribut si elle n'existe pas, ou remplacer une paire nom-valeur existante si elle a certaines valeurs d'attribut attendues).
Note
Vous ne pouvez pas mettre à jour les attributs de la clé primaire à l'aide de UpdateItem. Supprimez plutôt l'élément et utilisez-le PutItem pour créer un nouvel article avec de nouveaux attributs.
L' UpdateItem opération inclut un Action
paramètre qui définit le mode d'exécution de la mise à jour. Vous pouvez insérer, supprimer ou ajouter des valeurs d'attribut.
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, et les attributs de type ensemble ne peuvent pas être vides. Les demandes comprenant des valeurs vides sont rejetées avec une erreur ValidationException
.
Si un élément existant possède la clé primaire spécifiée :
PUT – Ajoute l'attribut spécifié. Si l'attribut existe, il est remplacé par la nouvelle valeur.
DELETE – Si aucune valeur n'est spécifiée, l'attribut et sa valeur sont supprimés. Si un ensemble de valeurs est spécifié, les valeurs dans l'ensemble spécifié sont supprimées de l'ancien ensemble. Ainsi, si la valeur d'attribut contient [a,b,c] et si l'action de suppression contient [a,c], la valeur d'attribut finale est [b]. Le type de la valeur spécifiée doit correspondre au type de valeur existant. La spécification d'un ensemble vide n'est pas valide.
ADD – N'utilisez l'action d'ajout que pour des nombres ou si l'attribut cible est un ensemble (y compris un ensemble de chaîne). L'action ADD ne fonctionne pas si l'attribut cible est une valeur de chaîne unique ou une valeur binaire scalaire. La valeur spécifiée est ajoutée à une valeur numérique (incrémentant ou décrémentant la valeur numérique existante), ou ajoutée en tant que valeur supplémentaire dans un ensemble de chaîne. Si un ensemble de valeurs est spécifié, les valeurs sont ajoutées à l'ensemble existant. Par exemple, si l'ensemble d'origine est [1,2] et si la valeur fournie est [3], après l'opération d'ajout, l'ensemble est [1,2,3], non [4,5]. Une erreur se produit si une action d'ajout est spécifiée pour un attribut d'ensemble et si le type d'attribut spécifié ne correspond pas au type d'ensemble existant.
Si vous utilisez l'action ADD pour un attribut qui n'existe pas, l'attribut et ses valeurs sont ajoutés à l'élément.
Si aucun élément ne correspond à la clé primaire spécifiée :
PUT – Crée un élément avec la clé primaire spécifiée. Ajoute ensuite l'attribut spécifié.
DELETE – Il ne se passe rien.
ADD – Crée un élément avec la clé primaire et le numéro (ou un ensemble de numéros) fournis pour la valeur d'attribut. Non valide pour un type chaîne ou binaire.
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. Par ailleurs, si vous mettez à jour un élément en utilisant l'action ADD
pour incrémenter ou décrémenter une valeur numérique pour un attribut qui n'existe pas avant la mise à jour (tandis que l'élément existe), DynamoDB utilise 0
comme valeur initiale. Par exemple, vous utilisez l'action ADD
pour ajouter +3
à un attribut qui n'existait pas avant la mise à jour. DynamoDB utilise 0
comme valeur initiale, et la valeur après la mise à jour est 3
.
Pour plus d'informations sur l'utilisation de cette opération, consultez Utilisation d'éléments et d'attributs dans DynamoDB.
Requêtes
Syntaxe
// This header is abbreviated. // For a sample of a complete header, see API de bas niveau de DynamoDB. POST / HTTP/1.1 x-amz-target: DynamoDB_20111205.UpdateItem content-type: application/x-amz-json-1.0 {"TableName":"Table1", "Key": {"HashKeyElement":{"S":"AttributeValue1"}, "RangeKeyElement":{"N":"AttributeValue2"}}, "AttributeUpdates":{"AttributeName3":{"Value":{"S":"AttributeValue3_New"},"Action":"PUT"}}, "Expected":{"AttributeName3":{"Value":{"S":"AttributeValue3_Current"}}}, "ReturnValues":"ReturnValuesConstant" }
Name (Nom) | Description | Obligatoire |
---|---|---|
TableName
|
Nom de la table contenant l'élément à mettre à jour. Type : String |
Oui |
Key
|
Clé primaire définissant l'élément. Pour plus d'informations sur les clés primaires, consultez Clé primaire. Type : mappage de |
Oui |
AttributeUpdates |
Mappage de nom d'attribut à la nouvelle valeur, et d'une action pour la mise à jour. Les noms d'attribut spécifient les attributs à modifier, et ne peuvent pas contenir d'attributs de clé primaire. Type : mappage de nom d'attribut, de valeur et d'une action pour la mise à jour. |
|
AttributeUpdates :Action |
Spécifie comment effectuer la mise à jour. Valeurs possibles : Type : String Par défaut : |
Non |
Expected
|
Désigne un attribut pour une mise à jour conditionnelle. Le paramètre Type : mappage de noms d'attribut. |
Non |
Expected:AttributeName
|
Nom de l'attribut pour l'insertion conditionnelle. Type : String |
Non |
Expected:AttributeName: ExpectedAttributeValue |
Utilisez ce paramètre pour spécifier si une valeur existe déjà pour la paire nom-valeur de l'attribut. La notation JSON suivante met à jour l'élément si l'attribut « Color » (Couleur) n'existe pas pour cet élément :
La notation JSON suivante vérifie si l'attribut « Color » (Couleur) a une valeur existante de « Yellow » (Jaune) avant de mettre à jour l'élément :
Par défaut, si vous utilisez le paramètre
NoteSi vous spécifiez |
Non |
ReturnValues
|
Utilisez ce paramètre si vous souhaitez obtenir les paires nom-valeur d'attribut avant leur mise à jour avec la demande Type : String |
Non |
Réponses
Syntaxe
L'exemple de syntaxe suivant part du principe que la demande a spécifié un paramètre ReturnValues
dont la valeur est ALL_OLD
. Sinon, la réponse ne contient que l'élément ConsumedCapacityUnits
.
HTTP/1.1 200 x-amzn-RequestId: 8966d095-71e9-11e0-a498-71d736f27375 content-type: application/x-amz-json-1.0 content-length: 140 {"Attributes":{ "AttributeName1":{"S":"AttributeValue1"}, "AttributeName2":{"S":"AttributeValue2"}, "AttributeName3":{"S":"AttributeValue3"}, "AttributeName5":{"B":"dmFsdWU="} }, "ConsumedCapacityUnits":1 }
Nom | Description |
---|---|
Attributes
|
Mappage de paires nom-valeur d'attribut, mais uniquement si le paramètre Type : mappage de paires nom-valeur d'attribut. |
ConsumedCapacityUnits |
Nombre d'unités de capacité d'écriture consommées par l'opération. Cette valeur indique le nombre appliqué à votre débit approvisionné. Pour plus d'informations, voir Mode de capacité provisionnée DynamoDB. Type : nombre |
Erreurs spéciales
Erreur | Description |
---|---|
ConditionalCheckFailedException
|
Le contrôle conditionnel a échoué. La valeur (« + name + ») de l'attribut est (« + value + ») mais la valeur attendue était (« + ExpValue + ») |
ResourceNotFoundExceptions
|
L'élément ou l'attribut spécifiés n'ont pas été trouvés. |
Exemples
Pour des exemples d'utilisation du AWS SDK, consultezUtilisation d'éléments et d'attributs dans DynamoDB.
Exemple de demande
// This header is abbreviated. For a sample of a complete header, see API de bas niveau de DynamoDB. POST / HTTP/1.1 x-amz-target: DynamoDB_20111205.UpdateItem content-type: application/x-amz-json-1.0 {"TableName":"comp5", "Key": {"HashKeyElement":{"S":"Julie"},"RangeKeyElement":{"N":"1307654350"}}, "AttributeUpdates": {"status":{"Value":{"S":"online"}, "Action":"PUT"}}, "Expected":{"status":{"Value":{"S":"offline"}}}, "ReturnValues":"ALL_NEW" }
Exemple de réponse
HTTP/1.1 200 OK x-amzn-RequestId: 5IMHO7F01Q9P7Q6QMKMMI3R3QRVV4KQNSO5AEMVJF66Q9ASUAAJG content-type: application/x-amz-json-1.0 content-length: 121 Date: Fri, 26 Aug 2011 21:05:00 GMT {"Attributes": {"friends":{"SS":["Lynda, Aaron"]}, "status":{"S":"online"}, "time":{"N":"1307654350"}, "user":{"S":"Julie"}}, "ConsumedCapacityUnits":1 }