web-dev-qa-db-fra.com

que se passera-t-il si nous insérons dans la base de données dynamo avec une clé de hachage en double?

J'essaie d'insérer dans la base de données dynamo. Lorsque j'appelle la fonction putItem, que se passera-t-il si la clé de hachage est déjà présente dans la base de données? L'objet PutItemResult contient-il quelque chose qui peut nous dire si une entrée de hachage en double a été tentée? Je souhaite éviter d'exécuter une autre requête pour vérifier s'il existe une entrée avec la clé de hachage que j'utilise.

23
coder

Si vous insérez un élément sur une clé primaire existante, il sera écrasé sauf si vous utilisez les "valeurs attendues". Voici l'introduction de la documentation officielle:

http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/API_PutItem.html

Crée un nouvel élément ou remplace un ancien élément par un nouvel élément (y compris tous les attributs). Si un élément existe déjà dans la table spécifiée avec la même clé primaire, le nouvel élément remplace complètement l'élément existant. Vous pouvez effectuer un put conditionnel (insérer un nouvel élément s'il n'existe pas avec la clé primaire spécifiée) ou remplacer un élément existant s'il a certaines valeurs d'attribut.

Remarque

Pour vous assurer qu'un nouvel élément ne remplace pas un élément existant, utilisez une opération de mise conditionnelle avec Exists défini sur false pour l'attribut ou les attributs de clé primaire.

Sinon, vous pouvez également utiliser UpdateItem pour mettre à jour les champs d'un élément préexistant: http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/API_UpdateItem.html

34
yadutaf

Vous pouvez utiliser 'withReturnValues ​​(ReturnValue.ALL_OLD)' qui retournera une carte de PutItemResult.getAttributes des valeurs qui étaient là avant l'insertion.

Si PutItemResult.getAttributes renvoie null, il s'agissait d'une nouvelle entrée.

2
Lee Winder