Does DynamoDB support transactions?

Yes. DynamoDB supports ACID transactions via TransactWriteItems and TransactGetItems. Each transaction groups up to 100 actions across one or more tables in the same account and Region into a single all-or-nothing operation, with a combined size limit of 4 MB. If any action fails, none are applied.

The two transaction APIs

  • TransactWriteItems — batches Put, Update, Delete, and ConditionCheck actions atomically. Synchronous and idempotent.
  • TransactGetItems — reads multiple items in a single atomic, consistent snapshot.

Rules and limits

  • Up to 100 items per transaction, across one or more tables.
  • All tables must be in the same account and Region.
  • Combined item size cannot exceed 4 MB.
  • You cannot target the same item twice in one transaction.
  • On global tables, ACID guarantees apply only within the Region where the transaction ran — changes replicate to other Regions after commit, and global tables in multi-Region strong consistency (MRSC) mode do not support the transaction APIs at all.

What atomicity costs

Same item, two paths, with ReturnConsumedCapacity switched on:

PutItem, one 920-byte item                 ConsumedCapacity 1
TransactWriteItems, the same single Put    ConsumedCapacity 2

A transactional write is two writes' worth of capacity, and a transactional read is two reads' worth. Sustained, that doubling is the entire trade: 100 writes per second of 1 KB items costs $164.25 a month in us-east-1 on-demand, or $328.50 if every one of them goes through a transaction. The pricing calculator has a transactional consistency setting for exactly this comparison.

The retry that doesn't apply twice

A transaction that times out may still have committed, so the retry is the dangerous part, not the transaction. ClientRequestToken is what makes the retry safe. Sending the same ADD counter :one transaction twice under one token:

TransactWriteItems  (token order-4711)     200
TransactWriteItems  (token order-4711)     200
GetItem counter                            {"N": "1"}

Both calls succeeded and the counter moved once. The token stays valid for 10 minutes after the first request finishes; reuse it later and the second call is a new transaction, so the counter moves again. Reuse it inside the window with any other parameter changed and DynamoDB returns IdempotentParameterMismatch.

Transaction vs batch

Unlike BatchWriteItem, which applies each item on its own (some writes may land while others fail), a transaction is all-or-nothing — use it when partial application would corrupt your data.

Go deeper

Learn patterns in DynamoDB transactions, and build the condition expressions they rely on with the Expression Builder. Download DynoTable to stage your item edits as reviewable diffs and commit them together as a transactional batch.

References

Last verified 2026-07-13 against the official AWS documentation linked above; the 100-action limit and the 10-minute idempotency window re-checked 2026-07-28.

The ConsumedCapacity values and the idempotent replay were reproduced 2026-07-28 against DynamoDB Local 3.3.0 via @aws-sdk/client-dynamodb 3.1095.0; monthly costs computed from the us-east-1 on-demand write-request-unit price in our synced AWS pricing table.

Work with DynamoDB without the Console

A fast DynamoDB desktop client that runs the real SQL DynamoDB can’t — JOINs, GROUP BY, aggregates — with visual editing and an AI agent on your own Bedrock keys.

Free 30-day trial, no credit card — then the Free plan with no time limit.