Skip to content

Atomic Updates

Update DynamoDB items without fetching them first — saves read capacity and ensures atomicity.

Basic Usage

# Atomic counter increment
User.update("user-123", "john@example.com") \
    .add(User.login_count, 1) \
    .execute()

# Multiple actions in one request
User.update("user-123", "john@example.com") \
    .set(User.status, "active") \
    .add(User.balance, 10.50) \
    .add(User.tags, {"verified"}) \
    .remove(User.temporary_code) \
    .execute()

Conditional Updates

User.update("user-123", "john@example.com") \
    .set(User.status, "inactive") \
    .condition(User.balance < 0) \
    .execute()

Raises ConditionalCheckFailedError if the condition is not met.

Delete Elements from a Set

User.update("user-123", "john@example.com") \
    .delete(User.permissions, {"admin_access"}) \
    .execute()

Return Modified Attributes

updated_user = User.update("user-123", "john@example.com") \
    .add(User.login_count, 1) \
    .return_values("ALL_NEW") \
    .execute()

Return value options: "ALL_NEW", "ALL_OLD", "UPDATED_NEW", "UPDATED_OLD", "NONE"

Supported Actions

Action Description Example
set(field, value) Update an attribute .set(User.status, "active")
remove(field) Remove an attribute .remove(User.temp_code)
add(field, value) Increment number or add to set .add(User.balance, 10.0)
delete(field, value) Remove elements from set .delete(User.tags, {"old"})
condition(expr) Apply conditional expression .condition(User.balance > 0)
return_values(opt) Control what's returned .return_values("ALL_NEW")