Multiple onConflictDoUpdate's supported?

I'm using two onConflictDoUpdate() and seems only the last one is picked up when run. Are multiple 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();


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" 
Was this page helpful?