# How to update database things in Bubble

- Tool: Bubble
- Difficulty: Intermediate
- Time required: 15-20 min
- Compatibility: All Bubble plans (bulk backend operations require Starter+)
- Last updated: March 2026

## TL;DR

Bubble provides the Make Changes to Thing action for updating individual records and Make Changes to a List of Things for bulk updates. This tutorial covers targeting the right record, updating single and multiple fields, bulk operations with Schedule API on a List, and conditional field updates.

## Overview: Updating Database Records in Bubble

Updating records is one of the most common operations in any Bubble app. Whether you are editing a user profile, changing an order status, or bulk-updating prices, you need to know the right approach. Bubble offers several methods for updates, each suited to different scenarios. This tutorial covers them all.

## Before you start

- A Bubble app with Data Types containing records to update
- Basic understanding of Bubble workflows and the Data tab
- Familiarity with Do a Search For and dynamic expressions

## Step-by-step guide

### 1. Update a single record with Make Changes to Thing

In your workflow, add the action Data → Make Changes to Thing. The first field asks which Thing to change — this is where you specify the record. Common sources: Current User (to update the logged-in user), Current cell's DataType (inside a Repeating Group), a search result, or Result of a previous step. After selecting the Thing, you see a list of all fields. Click each field you want to change and set the new value. Fields you do not set remain unchanged.

> Pro tip: You only need to set the fields you want to change. Omitted fields keep their current values — you do not need to re-set every field.

**Expected result:** The specified record's fields are updated with the new values.

### 2. Target records in different contexts

The most common sources for the thing to change: (1) Current User — always refers to the logged-in user. (2) Current cell's DataType — inside a Repeating Group, refers to the record in the current cell. (3) Do a Search for — finds a record by constraints, use :first item for a single result. (4) Result of step X — references a record created or found in a previous workflow step. (5) Parent group's DataType — references the record loaded in a parent group element.

**Expected result:** You can confidently target the correct record in any workflow context.

### 3. Update multiple records with Make Changes to a List of Things

For updating many records at once, use Data → Make Changes to a List of Things. Set the list to a search expression (e.g., Do a Search for Products where category = Old Category). Set the fields you want to change (e.g., category = New Category). This updates all matching records in a single action. Note: this action processes records client-side and has a limit — for very large lists (100+ records), use backend workflows.

> Pro tip: Make Changes to a List processes on the client side and can be slow for large datasets. For 100+ records, use Schedule API Workflow on a List instead.

**Expected result:** All records matching the search are updated simultaneously with the new field values.

### 4. Use Schedule API Workflow on a List for large bulk updates

For updating hundreds or thousands of records, create a backend API workflow that takes a single record as a parameter and makes the change. Then in your frontend workflow, use Schedule API Workflow on a List. Set the list to your search results and the workflow to your backend workflow. Bubble will process each record individually server-side, which is more reliable for large datasets and does not freeze the user's browser.

**Expected result:** Large bulk updates process reliably in the background without freezing the user's browser.

### 5. Conditionally update specific fields

Sometimes you only want to update a field under certain conditions. Use the Only When condition on individual workflow actions to skip the update when conditions are not met. For field-level conditions, you can use the expression: if Condition then NewValue otherwise CurrentValue as the field value. This pattern lets you selectively update fields based on business logic within a single Make Changes action.

**Expected result:** Fields are updated conditionally based on your business logic, with unchanged fields preserved.

## Complete code example

File: `Workflow summary`

```text
DATABASE UPDATE PATTERNS
=========================

PATTERN 1: Single Record Update
  Action: Make Changes to Thing
    Thing to change: Current cell's Product
    Fields:
      → title = TitleInput's value
      → price = PriceInput's value
      → Updated Date = Current date/time

PATTERN 2: Current User Update
  Action: Make Changes to Current User
    Fields:
      → name = NameInput's value
      → profile_picture = ImageUploader's value

PATTERN 3: Bulk Update (small dataset, <100 records)
  Action: Make Changes to a List of Things
    List: Do a Search for Products (category = "Old")
    Fields:
      → category = "New"
      → active = no

PATTERN 4: Bulk Update (large dataset, 100+ records)
  Backend Workflow: update-single-product
    Parameter: product (Product)
    Action: Make Changes to product
      → category = "New"
      → active = no

  Frontend Workflow:
    Action: Schedule API Workflow on a List
      → List: Do a Search for Products (category = "Old")
      → Workflow: update-single-product
      → product = This item

PATTERN 5: Conditional Field Update
  Action: Make Changes to Thing
    Thing: Current cell's Order
    Fields:
      → status = "Shipped"
      → shipped_date = Current date/time
         (Only set when status was previously "Paid")

PATTERN 6: Incrementing a Number Field
  Action: Make Changes to Thing
    Thing: Current cell's Product
    Fields:
      → view_count = Current cell's Product's view_count + 1
```

## Common mistakes

- **Using Do a Search in Make Changes instead of referencing the correct Thing** — A search returns a list, not a single record. You need to add :first item to get one record, or use the correct context like Current cell's DataType Fix: Use the correct data reference: Current cell's Data, Current User, Parent group's Data, or a Search :first item
- **Using Make Changes to a List for thousands of records** — This action runs client-side and can freeze the browser or time out for large datasets Fix: Use Schedule API Workflow on a List for bulk operations over 100 records
- **Expecting immediate visibility of changes in searches** — Bubble's database has a slight delay between writing and reading. A search immediately after Make Changes may not find the updated record Fix: Use Result of step X to reference the changed record instead of doing a new search

## Best practices

- Always use the most specific data reference available (Current cell, Current User, Result of step) rather than a search
- For bulk updates over 100 records, use Schedule API Workflow on a List for reliability
- Only set fields that are actually changing — omitted fields keep their current values
- Add a Modified Date field and update it on every change for audit tracking
- Use Result of step X to reference changed records in subsequent actions instead of searching
- Test updates with a single record before running bulk operations

## Frequently asked questions

### Does Make Changes to Thing trigger database triggers?

Yes. If you have database trigger events (A thing is modified) on the Data Type, they will fire when Make Changes to Thing updates a record.

### How many records can Make Changes to a List handle?

There is no hard limit, but it runs client-side. Lists over 100 records can cause browser slowness or timeouts. Use Schedule API Workflow on a List for large datasets.

### Can I undo an update?

Bubble has no built-in undo for database changes. To enable rollback, store the previous values in a history Data Type before making changes, or use version control for your app.

### How much does an update cost in Workload Units?

A single Make Changes to Thing costs approximately 0.5 WU. Bulk updates with Schedule API Workflow cost WUs per record processed. Monitor your usage in Settings → App metrics.

### Can I update records from an external API?

Yes. Enable the Data API in Settings → API, then use PUT or PATCH requests to update records at the endpoint https://yourapp.bubbleapps.io/api/1.1/obj/datatype/uniqueid.

### What if I need to update records across related Data Types?

Chain Make Changes actions in your workflow — update the parent record first, then update related records using Result of step or search. For complex relational updates, RapidDev can help design efficient update patterns.

---

Source: https://www.rapidevelopers.com/bubble-tutorial/update-database-records-in-bubble
© RapidDev — https://www.rapidevelopers.com/bubble-tutorial/update-database-records-in-bubble
