A linguagem SQL fornece a instrução UPDATE
para modificar dados. O Amazon DynamoDB usa a operação UpdateItem
para realizar tarefas semelhantes.
Modificar dados em uma tabela com o SQL
No SQL, você usa a instrução UPDATE
para modificar uma ou mais linhas. A cláusula SET
especifica novos valores para uma ou mais colunas, e a cláusula WHERE
determina quais linhas são modificadas. Veja um exemplo a seguir.
UPDATE Music
SET RecordLabel = 'Global Records'
WHERE Artist = 'No One You Know' AND SongTitle = 'Call Me Today';
Se nenhuma linha corresponder à cláusula WHERE
, a instrução UPDATE
não terá efeito.
Modificar dados em uma tabela no DynamoDB
No DynamoDB, você pode usar a API do DynamoDB ou do PartiQL (uma linguagem de consultas compatível com SQL) para modificar um único item. Caso deseje modificar vários itens, você deve usar várias operações.
Com a API do DynamoDB, use a operação UpdateItem
para modificar um único item.
{ TableName: "Music", Key: { "Artist":"No One You Know", "SongTitle":"Call Me Today" }, UpdateExpression: "SET RecordLabel = :label", ExpressionAttributeValues: { ":label": "Global Records" } }
Você deve especificar os atributos Key
do item a ser modificado, e uma UpdateExpression
para especificar valores de atributo. UpdateItem
comporta-se como uma operação “upsert”. O item será atualizado se existir na tabela. Do contrário, um novo item será adicionado (inserido).
UpdateItem
oferece suporte a gravações condicionais, nas quais a operação será bem-sucedida apenas se uma ConditionExpression
específica for verdadeira. Por exemplo, a operação UpdateItem
a seguir não realiza a atualização, a menos que o preço da música seja maior ou igual a 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
também oferece suporte a contadores atômicos ou a atributos do tipo Number
que podem ser aumentados ou reduzidos. Os contadores atômicos são semelhantes de muitas maneiras a geradores de sequências, colunas de identidade ou campos de incremento automático em bancos de dados SQL.
Veja a seguir um exemplo de uma operação UpdateItem
para inicializar um novo atributo (Plays) e controlar o número de vezes em que uma música é reproduzida.
{ TableName: "Music", Key: { "Artist":"No One You Know", "SongTitle":"Call Me Today" }, UpdateExpression: "SET Plays = :val", ExpressionAttributeValues: { ":val": 0 }, ReturnValues: "UPDATED_NEW" }
O parâmetro ReturnValues
é definido como UPDATED_NEW
, o que retorna os novos valores de todos os atributos que foram atualizados. Neste caso, ele retorna 0 (zero).
Sempre que alguém reproduzir essa música, podemos usar a operação UpdateItem
a seguir para aumentar Plays por um.
{ TableName: "Music", Key: { "Artist":"No One You Know", "SongTitle":"Call Me Today" }, UpdateExpression: "SET Plays = Plays + :incr", ExpressionAttributeValues: { ":incr": 1 }, ReturnValues: "UPDATED_NEW" }