Prisma新手求助:Delete/Update API如何部分使用Where子句?
Prisma中Update/Delete操作使用部分Where子句的问题解决
你的核心问题在于Prisma对单条记录操作(delete/update)的where条件限制:当schema里定义了联合唯一索引后,Prisma会强制要求你使用该索引作为查询条件时必须传入完整的字段组合,但你希望结合主键或只用部分字段来筛选。
给你几个可行的解决办法:
优先用主键做唯一定位
你的author模型已经有id作为主键,主键本身就是唯一标识,完全可以直接用id来精准定位要删除/更新的记录,不需要额外拼接其他字段:prisma.author.delete({ where: { id: datasetId } })(注意你代码里写的
prisma.datasets是笔误,你的模型是author)用批量操作API实现灵活筛选
如果你确实需要同时用id和first_name这类非完整唯一索引字段做条件,改用deleteMany或updateMany即可,这两个API支持任意的where条件组合,不需要严格遵循唯一索引的字段要求:// 删除符合条件的记录(注意会删除所有匹配项,务必保证条件精准) prisma.author.deleteMany({ where: { id: datasetId, first_name: 'kim' } }) // 更新操作同理 prisma.author.updateMany({ where: { id: datasetId, first_name: 'kim' }, data: { description: '更新后的作者描述' } })搞懂Prisma的规则逻辑
Prisma的单条操作(delete/update)要求where条件必须匹配一个唯一标识(主键或完整的唯一索引字段组合),目的是确保操作只会命中单条记录。而批量操作API则没有这个限制,支持更灵活的筛选逻辑。
内容的提问来源于stack exchange,提问作者Jinhyuck Cha
相关产品推荐
相关产品推荐

