如何在Prisma Client中通过ID列表批量删除数据库记录
Prisma Client 批量按ID删除的正确实现
你现有写法不生效的核心原因:equals 操作符仅用于匹配单个标量值,无法匹配值列表,你需要使用in操作符完成IN查询的需求,正确写法如下:
const idsToDelete = [5, 29, 255] await prisma.post.deleteMany({ where: { id: { in: idsToDelete } } })
特性说明
- 该写法是Prisma标准的通用过滤语法,底层会自动生成你期望的
DELETE ... WHERE id IN (x,y,z)形式的SQL语句 - 完全符合你的限制要求:
- 仅发起单次数据库请求,不需要批量调用独立delete的promise
- 不属于数据库专属特性,所有Prisma支持的关系型数据库(PostgreSQL、MySQL、SQLite等)均支持该语法,MongoDB环境下也能自动适配为对应查询逻辑
- 无需编写任何原生SQL,完全基于Prisma Client标准API实现
你提到的Scalar List Filters和当前场景不匹配:Scalar List Filters是针对字段本身为数组类型的场景设计的操作符,例如你有user.tags String[]这类数组字段时才需要用到,你当前的场景是用值列表匹配单个标量类型的id字段,不需要用到该特性。
内容的提问来源于stack exchange,提问作者Nate Vaughan
相关产品推荐
相关产品推荐

