© 2026 Hedgehog Software, LLC

TwitterGitHubDiscord
More
CommunitiesDocsAboutTermsPrivacy
Search
Star
Setup for Free
Drizzle TeamDT
Drizzle Team•2y ago•
4 replies
mw10013

Multiple onConflictDoUpdate's supported?

I'm using two
onConflictDoUpdate()
onConflictDoUpdate()
and seems only the last one is picked up when run. Are multiple
onConflictDoUpdate
onConflictDoUpdate
supported?

    const [subscription] = await db
      .insert(schema.subscriptions)
      .values({
        id: subscriptionData.id,
        status: subscriptionData.status,
        plan,
        cycleStartedAt,
        customerId: subscriptionData.customerId,
        createdAt,
        updatedAt,
      })
      .onConflictDoUpdate({
        target: schema.subscriptions.id,
        set: {
          status: subscriptionData.status,
          plan,
          cycleStartedAt,
          updatedAt,
        },
        setWhere: sql`${updatedAt.getTime()} > ${schema.subscriptions.updatedAt}`,
      })
      .onConflictDoUpdate({
        target: schema.subscriptions.customerId,
        set: {
          id: subscriptionData.id,
          status: subscriptionData.status,
          plan,
          cycleStartedAt,
          createdAt,
          updatedAt,
        },
        setWhere: sql`${createdAt.getTime()} > ${schema.subscriptions.createdAt}`,
      })
      .returning();
    const [subscription] = await db
      .insert(schema.subscriptions)
      .values({
        id: subscriptionData.id,
        status: subscriptionData.status,
        plan,
        cycleStartedAt,
        customerId: subscriptionData.customerId,
        createdAt,
        updatedAt,
      })
      .onConflictDoUpdate({
        target: schema.subscriptions.id,
        set: {
          status: subscriptionData.status,
          plan,
          cycleStartedAt,
          updatedAt,
        },
        setWhere: sql`${updatedAt.getTime()} > ${schema.subscriptions.updatedAt}`,
      })
      .onConflictDoUpdate({
        target: schema.subscriptions.customerId,
        set: {
          id: subscriptionData.id,
          status: subscriptionData.status,
          plan,
          cycleStartedAt,
          createdAt,
          updatedAt,
        },
        setWhere: sql`${createdAt.getTime()} > ${schema.subscriptions.createdAt}`,
      })
      .returning();


insert into "subscriptions" ("id", "status", "plan", "cycle_started_at", "customer_id", "created_at", "updated_at") 
values (?, ?, ?, ?, ?, ?, ?) 
on conflict ("subscriptions"."customer_id") 
do update set "id" = ?, "status" = ?, "plan" = ?, "cycle_started_at" = ?, "created_at" = ?, "updated_at" = ? 
where ? > "subscriptions"."created_at" returning "id", "status", "plan", "cycle_started_at", "customer_id", "created_at", "updated_at" 
insert into "subscriptions" ("id", "status", "plan", "cycle_started_at", "customer_id", "created_at", "updated_at") 
values (?, ?, ?, ?, ?, ?, ?) 
on conflict ("subscriptions"."customer_id") 
do update set "id" = ?, "status" = ?, "plan" = ?, "cycle_started_at" = ?, "created_at" = ?, "updated_at" = ? 
where ? > "subscriptions"."created_at" returning "id", "status", "plan", "cycle_started_at", "customer_id", "created_at", "updated_at" 
Drizzle TeamJoin
The official Discord for all Drizzle related projects, such as Drizzle ORM, Drizzle Kit, Drizzle Studio and more!
11,879Members
Resources

Similar Threads

Was this page helpful?
Recent Announcements

Similar Threads

Multiple `onConflictDoUpdate()`
Drizzle TeamDTDrizzle Team / help
2y ago
insert multiple rows - onConflictDoUpdate
Drizzle TeamDTDrizzle Team / help
2y ago
Insert multiple rows + onConflictDoUpdate
Drizzle TeamDTDrizzle Team / help
3y ago
onConflictDoUpdate
Drizzle TeamDTDrizzle Team / help
5w ago