Bird
Raised Fist0
DynamoDBquery~5 mins

Multiple actions in one update in DynamoDB

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
You can change many parts of a database item at once to save time and keep data correct.
When you want to change several details of a user profile in one go.
When you need to add a new tag and update a count number together.
When you want to remove an old value and add a new one in the same update.
When you want to increase a score and set a last played time at once.
Syntax
DynamoDB
UpdateExpression: "SET attribute1 = :val1, attribute2 = :val2 REMOVE attribute3 ADD attribute4 :val4 DELETE attribute5 :val5"
ExpressionAttributeValues: { ":val1": value1, ":val2": value2, ":val4": value4, ":val5": value5 }
Use SET to add or change attributes.
Use REMOVE to delete attributes.
Use ADD to add numbers or add elements to sets.
Use DELETE to remove elements from sets.
Examples
This changes age and city, removes oldAddress, and adds 10 points.
DynamoDB
UpdateExpression: "SET age = :newAge, city = :newCity REMOVE oldAddress ADD points :pointsToAdd"
ExpressionAttributeValues: { ":newAge": 30, ":newCity": "Seattle", ":pointsToAdd": 10 }
This sets status to active and removes tag1 and tag2 from the tags set.
DynamoDB
UpdateExpression: "SET status = :newStatus DELETE tags :tagsToRemove"
ExpressionAttributeValues: { ":newStatus": "active", ":tagsToRemove": {"tag1", "tag2"} }
Sample Program
This updates the player with ID 'player123' by setting their Level to 5, updating LastLogin time, removing OldBadge attribute, and adding 50 to their Score.
DynamoDB
UpdateItem {
  TableName: "Players",
  Key: { "PlayerID": { S: "player123" } },
  UpdateExpression: "SET Level = :newLevel, LastLogin = :loginTime REMOVE OldBadge ADD Score :scoreIncrease",
  ExpressionAttributeValues: {
    ":newLevel": { N: "5" },
    ":loginTime": { S: "2024-06-01T10:00:00Z" },
    ":scoreIncrease": { N: "50" }
  },
  ReturnValues: "UPDATED_NEW"
}
OutputSuccess
Important Notes
You can combine SET, REMOVE, ADD, and DELETE in one UpdateExpression.
Make sure ExpressionAttributeValues match the placeholders in UpdateExpression.
ReturnValues: "UPDATED_NEW" returns only the changed attributes.
Summary
Multiple actions let you update many parts of an item in one request.
Use SET to add or change, REMOVE to delete, ADD to increase numbers or add to sets, DELETE to remove from sets.
This saves time and keeps your data consistent.

Practice

(1/5)
1. In DynamoDB, which update action allows you to change or add new attributes to an item in a single update request?
easy
A. REMOVE
B. SET
C. ADD
D. DELETE

Solution

  1. Step 1: Understand update actions in DynamoDB

    DynamoDB update expressions use SET to add or modify attributes in an item.
  2. Step 2: Identify the correct action for adding or changing attributes

    SET is used to add new attributes or change existing ones in a single update request.
  3. Final Answer:

    SET -> Option B
  4. Quick Check:

    SET updates attributes [OK]
Hint: Use SET to add or change attributes in one update [OK]
Common Mistakes:
  • Confusing REMOVE with adding attributes
  • Using ADD to change non-numeric attributes
  • Thinking DELETE removes attributes instead of set elements
2. Which of the following is the correct syntax to update an attribute score by adding 10 in a DynamoDB update expression?
easy
A. DELETE score 10
B. SET score = score + 10
C. REMOVE score + 10
D. ADD score 10

Solution

  1. Step 1: Recall syntax for numeric increments in DynamoDB

    To increase a numeric attribute, DynamoDB uses ADD followed by the attribute and the value.
  2. Step 2: Match the correct syntax

    ADD score 10 correctly adds 10 to the existing score attribute.
  3. Final Answer:

    ADD score 10 -> Option D
  4. Quick Check:

    ADD increments numbers [OK]
Hint: Use ADD to increase numeric attributes in update [OK]
Common Mistakes:
  • Using SET with arithmetic expressions (not supported)
  • Using REMOVE or DELETE for numeric increments
  • Incorrect syntax like missing commas or keywords
3. Given the following update expression:
SET age = age + :inc REMOVE nickname ADD points :pts DELETE tags :oldTags
What will happen if the item initially has age = 30, nickname = 'Sam', points = 5, and tags = {'red', 'blue'} with :inc = 2, :pts = 3, and :oldTags = {'blue'}?
medium
A. age becomes 2, nickname removed, points become 8, tags become {'red', 'blue'}
B. age becomes 32, nickname removed, points become 3, tags become {'red', 'blue'}
C. age becomes 32, nickname removed, points become 8, tags become {'red'}
D. age becomes 32, nickname unchanged, points become 8, tags become {'red'}

Solution

  1. Step 1: Apply each update action to the initial item

    SET age = age + :inc adds 2 to 30 -> 32; REMOVE nickname deletes 'Sam'; ADD points :pts adds 3 to 5 -> 8; DELETE tags :oldTags removes 'blue' from {'red', 'blue'} -> {'red'}.
  2. Step 2: Confirm final attribute values

    age=32, nickname removed, points=8, tags={'red'} matches age becomes 32, nickname removed, points become 8, tags become {'red'}.
  3. Final Answer:

    age becomes 32, nickname removed, points become 8, tags become {'red'} -> Option C
  4. Quick Check:

    Multiple actions update all attributes correctly [OK]
Hint: Apply each action step-by-step to see final values [OK]
Common Mistakes:
  • Forgetting REMOVE deletes attribute
  • Confusing DELETE with REMOVE for sets
  • Misapplying ADD to sets instead of numbers
4. Identify the error in this DynamoDB update expression:
SET name = :n ADD age :a REMOVE points, DELETE tags :t
medium
A. Comma after REMOVE points is invalid syntax
B. ADD cannot be used with a non-numeric attribute like age
C. SET cannot assign a value using a placeholder like :n
D. REMOVE and DELETE cannot be used together in one update

Solution

  1. Step 1: Check syntax for multiple update actions

    REMOVE action lists attributes separated by spaces, not commas. The comma after points is invalid.
  2. Step 2: Validate other parts

    ADD can be used with numeric attributes; SET can use placeholders; REMOVE and DELETE can coexist.
  3. Final Answer:

    Comma after REMOVE points is invalid syntax -> Option A
  4. Quick Check:

    REMOVE uses spaces, not commas [OK]
Hint: Use spaces, not commas, to separate REMOVE attributes [OK]
Common Mistakes:
  • Using commas in REMOVE or DELETE lists
  • Assuming ADD works on non-numeric attributes
  • Thinking placeholders are not allowed in SET
5. You want to update a DynamoDB item to do all these in one update:
- Increase stock by 5
- Remove attribute discontinued
- Add newTag to a set attribute tags
Which update expression correctly performs all these actions?
hard
A. ADD stock :inc REMOVE discontinued ADD tags :newTag
B. SET stock = stock + :inc REMOVE discontinued ADD tags :newTag
C. ADD stock :inc REMOVE discontinued SET tags = tags + :newTag
D. SET stock = stock + :inc DELETE discontinued ADD tags :newTag

Solution

  1. Step 1: Choose correct action for increasing numeric attribute

    ADD stock :inc correctly increases numeric stock by :inc.
  2. Step 2: Remove attribute and add to set correctly

    REMOVE discontinued deletes the attribute; ADD tags :newTag adds elements to the set.
  3. Step 3: Verify syntax correctness

    ADD stock :inc REMOVE discontinued ADD tags :newTag uses ADD for numeric and set additions, REMOVE for attribute removal, all valid.
  4. Final Answer:

    ADD stock :inc REMOVE discontinued ADD tags :newTag -> Option A
  5. Quick Check:

    Use ADD for numbers and sets, REMOVE for attributes [OK]
Hint: Use ADD for numbers and sets, REMOVE for attributes [OK]
Common Mistakes:
  • Using SET with arithmetic expressions (not supported)
  • Using DELETE instead of REMOVE for attributes
  • Trying to add to sets with SET instead of ADD