Prisma结合PostgreSQL如何将自增字段起始值设置为0?
Prisma PostgreSQL 自增字段起始值设为0的解决方法
Prisma Schema 目前没有提供直接定义自增序列起始值的语法,你可以通过在Prisma迁移中添加自定义SQL的方式实现需求,具体操作如下:
方法1:新项目修改初始迁移
- 第一步:先按照你现有的模型定义,生成初始迁移(不立刻应用)
运行命令:npx prisma migrate dev --name init --create-only - 第二步:打开生成的迁移文件夹中的
migration.sql文件,在文件末尾追加序列修改语句:
注意PostgreSQL对驼峰命名的对象需要加双引号包裹,你的场景对应语句如下:ALTER SEQUENCE "SortableItem_order_seq" RESTART WITH 0; - 第三步:保存文件后执行迁移应用修改:
npx prisma migrate dev
修改完成后首次插入数据时,order字段就会从0开始计数。
方法2:已有历史迁移的线上项目
如果你的项目已经有历史迁移,不建议修改之前的迁移文件,可以单独生成一个新的迁移实现修改:
- 第一步:生成空的专属迁移文件
npx prisma migrate dev --name adjust_order_start --create-only - 第二步:打开新生成的空迁移文件,添加上面的
ALTER SEQUENCE语句后保存 - 第三步:应用迁移即可
npx prisma migrate dev
注意事项
- PostgreSQL默认的序列命名规则是
"表名_字段名_seq",如果你的表名或字段名是下划线命名,不需要额外加双引号,驼峰命名必须加双引号才能正确识别序列 - 该修改会跟随你的迁移文件生效,后续执行
prisma migrate reset等操作时不需要重复手动执行SQL - 如果后续你删除了
order字段再重新创建,需要重新执行一次序列修改操作
内容的提问来源于stack exchange,提问作者CookieEater
相关产品推荐
相关产品推荐

