You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Prisma中为多个JSONB字段创建唯一索引?

在Prisma中为PostgreSQL JSON列的嵌套字段创建唯一索引

直接在Prisma的@@unique属性中使用PostgreSQL的JSON路径表达式(比如car->>'year')会触发P1012验证错误,因为Prisma Schema不支持这种语法,哪怕只索引单个JSON路径字段也会报错。

解决方法是通过Prisma的@@index结合原生数据库配置来创建唯一索引:

  • 在模型中使用@@index的db参数,直接定义PostgreSQL原生的唯一索引规则,支持JSON路径表达式:
model Car {
  id    Int    @id @default(autoincrement())
  car   Json

  // 基于JSON嵌套字段创建唯一索引
  @@index([], name: "car_year_model_color_unique", db: {
    indexes: [
      {
        name: "car_year_model_color_unique",
        columns: ["(car->>'year')", "(car->>'model')", "(car->>'color')"],
        unique: true
      }
    ]
  })
}
  • 执行命令prisma migrate dev,Prisma会根据配置在PostgreSQL中创建对应的唯一索引。

这种方式绕过了Prisma Schema对@@unique的语法限制,直接在数据库层面实现基于JSON嵌套字段的唯一约束。

内容的提问来源于stack exchange,提问作者Random Data Monster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 10:44:52