繁体   English   中英

Prisma 查询 upsert

[英]Prisma query upsert

如何在 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

这是一个迟到的答案,但它可以帮助其他人。

我看到它的方式,在 postgres ON CONFLICT上期望一个独特的字段或具有独特约束的字段组合。 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'
     }
   }
 });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM