AttributeUpdates (herdado) - Amazon DynamoDB

AttributeUpdates (herdado)

nota

Sugerimos que você use os novos parâmetros de expressão, em vez desses parâmetros herdados. Para ter mais informações, consulte Usar expressões no DynamoDB. Para obter informações específicas sobre o novo parâmetro que substitui este, Use UpdateExpression em vez disso..

Em uma operação UpdateItem, o parâmetro condicional herdado AttributeUpdates contém os nomes dos atributos a serem modificados, a ação a ser realizada em cada um e o novo valor de cada um. Se você estiver atualizando um atributo que é um atributo de chave de índice de quaisquer índices dessa tabela, o tipo de atributo deverá coincidir com o tipo de chave de índice definido na AttributesDefinition da descrição da tabela. Você pode usar UpdateItem para atualizar todos os atributos que não são chave.

Os valores de atributo não podem ser nulos. Os atributos do tipo String e Binary devem ter tamanhos maior que zero. Os atributos do tipo Set não podem ficar vazios. As solicitações com valores vazios serão rejeitadas com uma exceção ValidationException.

Cada elemento AttributeUpdates consiste em um nome de atributo a ser modificado, junto com o seguinte:

  • Value - O novo valor, se aplicável, desse atributo.

  • Action: um valor que especifica como executar a atualização. Essa ação só é válida para um atributo existente cujo tipo de dados é Number ou é Set; não use ADD para outros tipos de dados.

    Se um item com a chave primária especificada for encontrado na tabela, os seguintes valores executam as ações a seguir:

    • PUT: adiciona o atributo especificado ao item. Se o atributo já existir, ele será substituído pelo novo valor.

    • DELETE: remove o atributo e o respectivo valor, se nenhum valor for especificado para DELETE. O tipo de dados do valor especificado deve corresponder ao tipo de dados do valor existente.

      Se um conjunto de valores for especificado, esses valores serão subtraídos do conjunto antigo. Por exemplo, se o valor do atributo era o conjunto [a,b,c] e a ação DELETE especifica [a,c], o valor do atributo final será [b]. Especificar um conjunto vazio é um erro.

    • ADD: adiciona o valor especificado ao item se o atributo ainda não existir. Se o atributo não existir, o comportamento de ADD dependerá do tipo de dados do atributo:

      • Se o atributo existente for um número e se Value também for um número, então Value será matematicamente adicionado ao atributo existente. Se Value for um número negativo, ele será subtraído do atributo existente.

        nota

        Se você usar ADD para aumentar ou reduzir um valor de número de um item que não existe antes da atualização, o DynamoDB usará 0 como o valor inicial.

        Da mesma forma, se você usar ADD para um item existente para aumentar ou diminuir um valor de atributo que não existia antes da atualização, o DynamoDB usará 0 como o valor inicial. Por exemplo, suponha que o item que você deseja atualizar não tem um atributo chamado itemcount, mas você decide ADD o número 3 a esse atributo mesmo assim. O DynamoDB criará o atributo itemcount, definir seu valor inicial como 0 e, finalmente, adicionar 3 a ele. O resultado será um novo atributo itemcount, com um valor 3.

      • Se o tipo de dados existente for um conjunto, e se Value também for um conjunto, então Value será anexado ao conjunto existente. Por exemplo, se o valor do atributo for o conjunto [1,2] e a ação ADD especificou [3], o valor do atributo final será [1,2,3]. Ocorrerá um erro se uma ação ADD for especificada para um atributo de conjunto e o tipo de atributo especificado não corresponder ao tipo de conjunto existente.

        Ambos os conjuntos devem ter o mesmo tipo de dados primitivo. Por exemplo, se o tipo de dados existente for um conjunto de strings, Value também deve ser um conjunto de strings.

    Se nenhum item com a chave especificada for encontrado na tabela, os seguintes valores executam as ações a seguir:

    • PUT - faz com que o DynamoDB crie um novo item com a chave primária especificada e, em seguida, adiciona o atributo.

    • DELETE: nada acontece, pois os atributos não podem ser excluídos de um item inexistente. A operação é bem-sucedida, mas o DynamoDB não cria um novo item.

    • ADD: faz com que o DynamoDB crie um item com o número e a chave primária fornecidos (ou conjunto de números) para o valor de atributo. Os únicos tipos de dados permitidos são Number e Number Set.

Se você fornecer quaisquer atributos que sejam parte de uma chave de índice, então, os tipos de dados desses atributos devem corresponder aos do esquema na definição de atributo da tabela.

Use UpdateExpression em vez disso: exemplo

Suponha que você quisesse modificar um item na tabela Music. Você poderia usar uma solicitação UpdateItem com um parâmetro AttributeUpdates, como neste exemplo da AWS CLI:

aws dynamodb update-item \ --table-name Music \ --key '{ "SongTitle": {"S":"Call Me Today"}, "Artist": {"S":"No One You Know"} }' \ --attribute-updates '{ "Genre": { "Action": "PUT", "Value": {"S":"Rock"} } }'

Você pode usar UpdateExpression em vez disso:

aws dynamodb update-item \ --table-name Music \ --key '{ "SongTitle": {"S":"Call Me Today"}, "Artist": {"S":"No One You Know"} }' \ --update-expression 'SET Genre = :g' \ --expression-attribute-values '{ ":g": {"S":"Rock"} }'

Para obter mais informações sobre como atualizar os atributos, consulte Atualizar um item de uma tabela do DynamoDB.