superapp
ClientQueries

Update

Update one or more rows matching a condition.

Use db.update() to modify rows matching a condition.

import { drizzle } from '@superapp/db'
import { eq } from 'drizzle-orm'
import * as schema from './generated/schema'

const db = drizzle({ connection, token, schema })

// The backend ensures you can only update your own rows.
// Even if you pass someone else's order ID, the permission filter
// scopes the UPDATE to rows owned by the logged-in user — so it
// simply won't match and nothing gets modified.
await db.update(schema.orders)
  .set({ status: 'shipped' })
  .where(eq(schema.orders.id, 'ord_abc123'))

Update with Returning

const [updated] = await db.update(schema.orders)
  .set({ status: 'shipped' })
  .where(eq(schema.orders.id, 'ord_abc123'))
  .returning()
// updated: { id, amount, status, ... }

Update Multiple Fields

await db.update(schema.orders)
  .set({
    status: 'delivered',
    amount: 300,
  })
  .where(eq(schema.orders.id, 'ord_abc123'))

Bulk Update

Update all rows matching a broader condition.

await db.update(schema.orders)
  .set({ status: 'cancelled' })
  .where(eq(schema.orders.status, 'pending'))

Update with Complex Filters

import { eq, lt, and } from 'drizzle-orm'

await db.update(schema.orders)
  .set({ status: 'expired' })
  .where(and(
    eq(schema.orders.status, 'pending'),
    lt(schema.orders.createdAt, new Date('2024-01-01'))
  ))

On this page