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

如何在Prisma中为多表创建共用序列字段(PostgreSQL)

解决Prisma自动删除共用序列及默认值的问题

核心原因

Prisma 基于 Schema 文件生成迁移,若手动在迁移中添加序列和字段默认值,但未在 Schema 里显式定义关联关系,Prisma 会将这些视为「额外的数据库变更」,在下一次迁移时自动清理。

具体解决方案

  • 在 Prisma Schema 中显式绑定序列与默认值
    给需要使用共用序列的字段添加 @default(dbgenerated("nextval('global_custom_id_sequence')")) 定义,让 Prisma 识别该默认值依赖数据库序列,示例:

    model Section {
      id        Int      @id @default(autoincrement())
      // 其他字段...
      custmId   Int?     @default(dbgenerated("nextval('global_custom_id_sequence')"))
    }
    

    其他共用该序列的表,按同样方式定义对应字段。

  • 保留合法的手动迁移文件
    保留你手动创建的包含 CREATE SEQUENCE 和字段默认值设置的迁移文件,确保语句完整。后续运行迁移时,Prisma 会对比 Schema 与数据库状态,不会再生成删除序列和默认值的语句。

  • 删除自动生成的错误迁移
    若已生成包含 DROP SEQUENCE 和 DROP DEFAULT 的迁移文件,直接删除该文件(不要执行),修正 Schema 后再重新生成或调整迁移。

补充说明

如果使用 PostgreSQL 以外的数据库,需调整 dbgenerated 内的语法适配对应数据库的序列调用方式,核心逻辑不变:让 Prisma 通过 Schema 感知序列与字段的关联,避免将其视为无用对象清理。

内容的提问来源于stack exchange,提问作者Yuri Shust

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 10:12:42