PutItem
importante
Esta sección se refiere a la versión 2011-12-05 del API, que está obsoleta y no debe utilizarse para nuevas aplicaciones.
Para consultar la documentación sobre la API de bajo nivel actual, consulte la Referencia de la API de Amazon DynamoDB.
Descripción
Crea un elemento nuevo o sustituye uno antiguo por uno nuevo (incluyendo todos los atributos). Si ya existe un elemento con la misma clave principal en la tabla especificada, el nuevo elemento sustituye por completo al existente. Puede realizar una colocación condicional (insertar un nuevo elemento solamente si no existe otro con la clave principal especificada) o bien sustituir un elemento existente si sus atributos tienen determinados valores.
Los valores de los atributos no pueden ser null; los atributos de tipo cadena y binario deben tener una longitud superior a cero; y los atributos de tipo conjunto no pueden estar vacíos. Las solicitudes con valores vacíos se rechazan con la excepción ValidationException
.
nota
Para garantizar que un nuevo elemento no sustituya un elemento existente, utilice una operación de colocación condicional con Exists
establecido en false
para el o los atributos de clave principal.
Para obtener más información acerca del uso de PutItem
, consulte Uso de elementos y atributos en DynamoDB.
Solicitudes
Sintaxis
// This header is abbreviated. // For a sample of a complete header, see API de bajo nivel de DynamoDB. POST / HTTP/1.1 x-amz-target: DynamoDB_20111205.PutItem content-type: application/x-amz-json-1.0 {"TableName":"Table1", "Item":{ "AttributeName1":{"S":"AttributeValue1"}, "AttributeName2":{"N":"AttributeValue2"}, "AttributeName5":{"B":"dmFsdWU="} }, "Expected":{"AttributeName3":{"Value": {"S":"AttributeValue"}, "Exists":Boolean}}, "ReturnValues":"ReturnValuesConstant"}
Nombre | Descripción | Obligatorio |
---|---|---|
TableName
|
Nombre de la tabla que contendrá el elemento. Tipo: cadena |
Sí |
Item
|
Mapa de los atributos del elemento, que debe incluir los valores de clave principal que definen el elemento. Se pueden indicar otros pares de nombre-valor de los atributos del elemento. Para obtener más información sobre claves principales, consulte Clave principal. Tipo: Map, mapa de los nombres de atributos a los valores de atributos. |
Sí |
Expected
|
Designa un atributo para una colocación condicional. El parámetro Tipo: Map, mapa de nombres de un atributo a valores de un atributo e indicación de si existe. |
No |
Expected:AttributeName
|
Nombre del atributo para la operación Put condicional. Tipo: cadena |
No |
Expected:AttributeName: ExpectedAttributeValue |
Use este parámetro para especificar si ya existe un valor del par de nombre-valor del atributo. En la siguiente notación JSON, se sustituye el elemento si todavía no existe el atributo "Color" para ese elemento:
En la siguiente notación JSON se comprueba si el atributo denominado "Color" tiene el valor "Yellow" antes de sustituir el elemento:
De forma predeterminada, si utiliza el parámetro
notaSi especifica |
No |
ReturnValues
|
Use este parámetro si desea obtener los pares de nombre-valor de los atributos antes de actualizarlos mediante la solicitud Tipo: cadena |
No |
Respuestas
Sintaxis
En el ejemplo de sintaxis siguiente se supone que la solicitud ha especificado un parámetro ReturnValues
de ALL_OLD
; en caso contrario, la respuesta solo contiene la entrada ConsumedCapacityUnits
.
HTTP/1.1 200 x-amzn-RequestId: 8966d095-71e9-11e0-a498-71d736f27375 content-type: application/x-amz-json-1.0 content-length: 85 {"Attributes": {"AttributeName3":{"S":"AttributeValue3"}, "AttributeName2":{"SS":"AttributeValue2"}, "AttributeName1":{"SS":"AttributeValue1"}, }, "ConsumedCapacityUnits":1 }
Nombre | Descripción |
---|---|
Attributes
|
Valores de los atributos antes de la operación de colocación, pero solamente si el parámetro Tipo: Map, mapa de pares de nombre-valor del atributo. |
ConsumedCapacityUnits |
Cantidad de unidades de capacidad de escritura consumidas por la operación. Este valor muestra el número aplicado al rendimiento aprovisionado. Para obtener más información, consulte Modo de capacidad aprovisionada de DynamoDB. Tipo: Number |
Errores especiales
Error | Descripción |
---|---|
ConditionalCheckFailedException
|
Error en la verificación condicional. No se encontró un valor de atributo esperado. |
ResourceNotFoundException
|
No se encontró el elemento o atributo especificado. |
Ejemplos
Para obtener ejemplos sobre cómo usar el SDK de AWS, consulte Uso de elementos y atributos en DynamoDB.
Solicitud de ejemplo
// This header is abbreviated. For a sample of a complete header, see API de bajo nivel de DynamoDB. POST / HTTP/1.1 x-amz-target: DynamoDB_20111205.PutItem content-type: application/x-amz-json-1.0 {"TableName":"comp5", "Item": {"time":{"N":"300"}, "feeling":{"S":"not surprised"}, "user":{"S":"Riley"} }, "Expected": {"feeling":{"Value":{"S":"surprised"},"Exists":true}} "ReturnValues":"ALL_OLD" }
Respuesta de ejemplo
HTTP/1.1 200 x-amzn-RequestId: 8952fa74-71e9-11e0-a498-71d736f27375 content-type: application/x-amz-json-1.0 content-length: 84 {"Attributes": {"feeling":{"S":"surprised"}, "time":{"N":"300"}, "user":{"S":"Riley"}}, "ConsumedCapacityUnits":1 }