[英]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.