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

Prisma的autoincrement()能否从0开始?PostgreSQL场景问询

如何让Prisma自增ID从0开始(PostgreSQL环境)

核心结论

在PostgreSQL中,让标注了@id @default(autoincrement())的字段从0开始自增是完全可行的,NOT NULL不是阻碍因素。

具体实现方法

Prisma生成的SERIAL类型,本质是PostgreSQL自动创建了一个关联序列(比如对应Message表的序列名为"Message_id_seq")。要让自增起始值改为0,只需手动执行以下SQL修改序列:

ALTER SEQUENCE "Message_id_seq" RESTART WITH 0;

执行这条语句后,后续插入的第一条数据的id就会是0,之后正常自增。

关于NOT NULL的疑问

完全不需要移除NOT NULL约束:

  • 主键本身就隐含NOT NULL属性,即使不显式声明,PostgreSQL也会自动添加
  • 自增序列生成的数值永远是非空的,不会出现NULL的情况
  • 移除NOT NULL反而会破坏数据完整性,毫无必要

为什么Prisma没有内置这个功能

  1. 通用惯例优先:自增ID从1开始是绝大多数数据库的默认行为,覆盖了99%以上的业务场景,属于行业通用惯例
  2. 跨数据库兼容性:Prisma主打跨数据库适配,不同数据库修改序列起始值的语法差异很大,内置这个功能会增加维护复杂度
  3. 自定义需求交给底层:这类数据库层面的个性化配置,Prisma更倾向于让用户通过原生SQL手动实现,而非将其封装为通用API

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 08:52:11