El lenguaje SQL proporciona la instrucción UPDATE
para modificar datos. Amazon DynamoDB utiliza la operación UpdateItem
para llevar a cabo tareas semejantes.
Temas
Modificación de los datos de una tabla con SQL
En SQL, se utilizaría la instrucción UPDATE
para modificar una o varias filas. La cláusula SET
especifica los nuevos valores de una o varias columnas y la cláusula WHERE
determina qué filas se modifican. A continuación se muestra un ejemplo.
UPDATE Music
SET RecordLabel = 'Global Records'
WHERE Artist = 'No One You Know' AND SongTitle = 'Call Me Today';
Si no hay ninguna fila que coincida con la cláusula WHERE
, la instrucción UPDATE
no surte efecto.
Modificación de los datos de una tabla en DynamoDB
En DynamoDB, puede utilizar la API clásica o PartiQL (un lenguaje de consulta compatible con SQL) para modificar un solo elemento. Si desea modificar varios elementos, debe utilizar varias operaciones.
Con la API de DynamoDB, se utiliza la operación UpdateItem
para modificar un solo elemento.
{ TableName: "Music", Key: { "Artist":"No One You Know", "SongTitle":"Call Me Today" }, UpdateExpression: "SET RecordLabel = :label", ExpressionAttributeValues: { ":label": "Global Records" } }
Debe especificar los atributos Key
del elemento que va a modificar y una expresión UpdateExpression
para especificar los valores de los atributos. UpdateItem
se comporta como una operación “upsert”. Si el elemento está presente en tabla, se actualiza y, si no está presente, se agrega (inserta).
UpdateItem
admite las escrituras condicionales, en las que la operación únicamente se lleva a cabo correctamente si una expresión ConditionExpression
determinada se evalúa en true. Por ejemplo, la operación UpdateItem
siguiente no lleva a cabo la actualización a no ser que el precio de la canción sea mayor o igual que 2,00.
{ TableName: "Music", Key: { "Artist":"No One You Know", "SongTitle":"Call Me Today" }, UpdateExpression: "SET RecordLabel = :label", ConditionExpression: "Price >= :p", ExpressionAttributeValues: { ":label": "Global Records", ":p": 2.00 } }
UpdateItem
también admite los contadores atómicos, que son atributos del tipo Number
que se pueden incrementar o reducir. Los contadores atómicos se parecen en muchos aspectos a los generadores de secuencia, las columnas de identidad o los campos de incremento automático de las bases de datos SQL.
A continuación se muestra un ejemplo de operación UpdateItem
utilizada para inicializar un nuevo atributo (Plays) que permite realizar el seguimiento del número de veces que se ha reproducido una canción.
{ TableName: "Music", Key: { "Artist":"No One You Know", "SongTitle":"Call Me Today" }, UpdateExpression: "SET Plays = :val", ExpressionAttributeValues: { ":val": 0 }, ReturnValues: "UPDATED_NEW" }
El parámetro ReturnValues
se establece en UPDATED_NEW
, que devuelve los nuevos valores de todos los atributos que se han actualizado. En este caso, devuelve 0 (cero).
Cada vez que alguien reproduce esta canción, podemos usar la operación UpdateItem
para incrementar Plays en una unidad.
{ TableName: "Music", Key: { "Artist":"No One You Know", "SongTitle":"Call Me Today" }, UpdateExpression: "SET Plays = Plays + :incr", ExpressionAttributeValues: { ":incr": 1 }, ReturnValues: "UPDATED_NEW" }