Prisma查询Upsert

发布于 2025-02-12 05:23:10 字数 411 浏览 1 评论 0原文

我该如何在Prisma中进行此查询:

    INSERT INTO user_conference (user_id, conference_id, points, activities_completed)
    VALUES (1, '3a4QQI0KbO0eaDjzhIgeeZ', 40, ARRAY ['4vwp3L1EJYQ9rI1Pv7er2'])
    ON CONFLICT (user_id, conference_id) DO UPDATE
    SET points = user_conference.points + 40, 
    activities_completed = user_conference.activities_completed || '4vwp3L1EJYQ9rI1Pv7c4x0'::text

How can I do this query in prisma:

    INSERT INTO user_conference (user_id, conference_id, points, activities_completed)
    VALUES (1, '3a4QQI0KbO0eaDjzhIgeeZ', 40, ARRAY ['4vwp3L1EJYQ9rI1Pv7er2'])
    ON CONFLICT (user_id, conference_id) DO UPDATE
    SET points = user_conference.points + 40, 
    activities_completed = user_conference.activities_completed || '4vwp3L1EJYQ9rI1Pv7c4x0'::text

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

热血少△年 2025-02-19 05:23:10

这是一个较晚的答案,但可以帮助他人。

我的看法是,在Postgres 冲突上期望唯一字段或具有独特约束的字段组合。 Prisma也是如此。

Prisma模型上,请使用此。

model user_conference {
   user_id Int
   conference_id String
   points Int
   activities_completed String[]
   @@unique([user_id, conference_id])
 }

在您直接查询翻译的

prisma.user_conference.upsert({
   where: {
     user_id_conference_id : { // here Prisma expects user_id and conference_id both in combination are unique
       user_id: 1,
       conference_id: '3a4QQI0KbO0eaDjzhIgeeZ',
     }
   },
   create: {
     user_id: 1,
     conference_id: '3a4QQI0KbO0eaDjzhIgeeZ',
     points: 40,
     activities_completed: ['4vwp3L1EJYQ9rI1Pv7er2']
   },
   update: {
     points: {
       increment: 40,
     },
     activities_completed: {
       push: '4vwp3L1EJYQ9rI1Pv7c4x0'
     }
   }
 });
}

This is a late answer, but it could help others.

The way I see it, on Postgres ON CONFLICT expect a unique field or a combination of fields with unique constraints. This goes the same for PRISMA.

On your Prisma model

model user_conference {
   user_id Int
   conference_id String
   points Int
   activities_completed String[]
   @@unique([user_id, conference_id])
 }

For your direct query translation, use this.

prisma.user_conference.upsert({
   where: {
     user_id_conference_id : { // here Prisma expects user_id and conference_id both in combination are unique
       user_id: 1,
       conference_id: '3a4QQI0KbO0eaDjzhIgeeZ',
     }
   },
   create: {
     user_id: 1,
     conference_id: '3a4QQI0KbO0eaDjzhIgeeZ',
     points: 40,
     activities_completed: ['4vwp3L1EJYQ9rI1Pv7er2']
   },
   update: {
     points: {
       increment: 40,
     },
     activities_completed: {
       push: '4vwp3L1EJYQ9rI1Pv7c4x0'
     }
   }
 });
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文