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

PostgreSQL中SERIAL类型能否从0开始?

在PostgreSQL中SERIAL类型能否从0开始?

SERIAL是PostgreSQL提供的语法糖,它会自动为整数列绑定一个自增序列,默认情况下这个序列的起始值是1,但这不代表无法让它从0开始。

你可以通过两种方式实现从0开始自增:

  • 方式一:先创建起始值为0的序列,再关联到表列
-- 创建起始为0的序列
CREATE SEQUENCE users_id_seq START WITH 0;
-- 创建表并将列默认值绑定到该序列
CREATE TABLE users (
    id INTEGER NOT NULL DEFAULT nextval('users_id_seq'),
    name TEXT
);
-- 绑定序列与列,确保删除表时序列一同被清理
ALTER SEQUENCE users_id_seq OWNED BY users.id;
  • 方式二:先使用SERIAL创建表,再修改对应序列的起始值
CREATE TABLE users (
    id SERIAL,
    name TEXT
);
-- 修改序列,让其从0开始
ALTER SEQUENCE users_id_seq RESTART WITH 0;

完成设置后,插入数据时如果不手动指定id值,第一条数据的id就会是0,之后依次自增:

INSERT INTO users (name) VALUES ('Alice');
SELECT id FROM users; -- 返回结果为0

PostgreSQL文档中提到SERIAL取值范围从1开始,指的是它的默认行为,而非不可修改的限制。通过调整序列的起始值,完全可以实现从0开始的自增逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 16:09:57