2012-09-17 30 views
16

Estoy tratando de insertar en dynamo DB. Cuando llamo a la función putItem, ¿qué pasará si la clave hash ya está presente en el DB? ¿El objeto PutItemResult contiene algo que nos puede decir si se intentó una entrada de hash duplicada? Quiero evitar ejecutar otra consulta para verificar si hay una entrada con la clave hash que estoy usando.¿qué pasará si lo insertamos en dinamo DB con una clave hash duplicada?

+0

¿Estás usando un marco específico? – yadutaf

Respuesta

20

Si inserta un elemento en una clave principal existente, se sobrescribirá a menos que utilice los "valores esperados". Aquí está la introducción de la documentación oficial:

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

crea un nuevo elemento, o reemplaza un elemento de edad con un nuevo elemento (incluyendo todos los atributos). Si un elemento ya existe en la tabla especificada con la misma clave principal, el nuevo elemento reemplaza completamente el elemento existente. Puede realizar una colocación condicional (insertar un nuevo elemento si no existe uno con la clave primaria especificada), o reemplazar un elemento existente si tiene ciertos valores de atributo.

Nota

Para garantizar que un nuevo elemento no pretende sustituir un elemento existente, utilice un condicional operación put con existe establece en false para el atributo clave primaria o atributos.

De lo contrario, también se puede utilizar para actualizar UpdateItem campos de un elemento preexistente: http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/API_UpdateItem.html

+0

Creo que la forma más segura de crear un artículo es nunca usar putItem y siempre usar UpdateItem. en mi caso uso updateItem solo con las teclas para crear un objeto, si ya sale no hace nada. –

1

Puede utilizar 'withReturnValues ​​(ReturnValue.ALL_OLD)' que devolverá un mapa a partir de la PutItemResult.getAttributes valores que estaban allí antes de la inserción.

Si PutItemResult.getAttributes devuelve nulo, era una entrada nueva.

Cuestiones relacionadas