A solicitação de transação não pode incluir múltiplas operações em um item
TL;DR — Duas ações na mesma solicitação TransactWriteItems têm como alvo o mesmo item (mesma chave primária). O DynamoDB exige que cada item em uma transação seja único, portanto, ele rejeita toda a chamada antes de executar qualquer uma delas. Recolha as ações duplicadas em uma ou mova uma delas para uma gravação separada.
O que significa
ValidationException: Transaction request cannot include multiple operations on one itemUma solicitação TransactWriteItems agrupa até 100 ações (Put, Update, Delete, ConditionCheck) que são todas confirmadas ou todas falham. Uma regra rígida do API é que não há duas ações que possam ter como alvo o mesmo item — o DynamoDB identifica um item por sua chave primária completa e cada chave pode aparecer no máximo uma vez. Este é um HTTP 400 ValidationException, capturado antes da execução da transação e não pode ser repetida no estado em que se encontra.
Por que isso acontece
- Um
ConditionCheckmais uma gravação na mesma chave — você tentou afirmar uma condição em um item e tambémUpdate/Deletena mesma transação. Em vez disso, adicione a condição aoConditionExpressionda gravação. - Duas escritas na mesma chave — por ex. um
Pute umUpdatepara o mesmo item, geralmente de um loop que não desduplica por chave. - Um lote gerado com chaves duplicadas — um ORM ou camada de mapeamento emitiu a mesma partição+chave de classificação duas vezes.
- Mesma chave em duas ações diferentes em tabelas que você pensa são diferentes — o item é exclusivamente
{table, PK, SK}; uma repetição na mesma tabela a aciona.
Como corrigir
- Desduplicar por chave primária antes de criar a transação — cada
{PK, SK}pode aparecer uma vez. - Mesclar um
ConditionCheckna gravação que ele protege: coloque a asserção no próprioConditionExpressiondesse item em vez de adicionar uma açãoConditionCheckseparada. - Combine duas mutações em um
Updateusando um únicoUpdateExpression(SET/ADD/REMOVE) em vez de duas ações. - Dividir a lógica inevitável de várias etapas em transações ou escritas separadas se as operações realmente não puderem ser expressas como uma ação.
- Registre as chaves primárias em seu array
TransactItems. É fácil perder chaves duplicadas em lotes gerados — imprima cada{PK, SK}antes de enviar.
Confira primeiro no DynoTable
Antes de construir uma transação de vários itens, liste as chaves de destino em DynoTable — abra a tabela com ⌘K e confirme que cada chave primária é única em sua lista de ações. A preparação (⌘S) permite testar uma transação de item único antes de aumentar a escala.
A condição de mesclagem verifica as escritas usando o Expression Builder. Alternar perfis com ⌘P; consulte Conectar ao AWS e Instalar.
Fontes
- TransactWriteItems — Referência do Amazon DynamoDB API (verificado em 13/07/2026)
- Transações Amazon DynamoDB: como funciona (verificado em 13/07/2026)
Erros relacionados
- TransactionCanceledException — a transação foi analisada, mas uma condição ou conflito a cancelou no commit.
- Muitos itens em uma chamada TransactWriteItems — mais de 100 ações em uma transação.
- ValidationException (visão geral)
- Exemplo de código: TransactWriteItems in Node.js — uma transação válida de vários itens para adaptar.
- Aprenda: transações DynamoDB
Referências
- TransactWriteItems — Referência do Amazon DynamoDB API
- Transações do Amazon DynamoDB: como funciona — Guia do desenvolvedor do Amazon DynamoDB
- Tratamento de erros com DynamoDB — Guia do desenvolvedor do Amazon DynamoDB
Última verificação em 13/07/2026 em relação à documentação oficial do AWS vinculada acima.