postgresql 主键自增

postgreSQL 自增需要使用序列

  1. 使用 SERIAL 伪类型
CREATE TABLE table_name(
    id SERIAL
);

赋值serial伪类型给id列,PostgreSQL将执行下列步骤:

  • 创建序列对象并设置下一个生成值作为列的缺省值。
  • 给对应列增加NOT NULL约束,因为序列总是生成一个整数值,不能为null值。
  • 赋值序列的拥有者给id列,因此当id列或表被删除时,序列对象自动被删除。
  • MAXVALUE=9223372036854775807

相当于执行了下面语句:

CREATE SEQUENCE table_name_id_seq;

CREATE TABLE table_name (
    id integer NOT NULL DEFAULT nextval('table_name_id_seq')
);

ALTER SEQUENCE table_name_id_seq
OWNED BY table_name.id;

PostgreSQL 提供三种序列伪类型,分别为SMALLSERIAL,SERIAL,BIGSERIAL,对应范围如下:

Name Storage Size Range
SMALLSERIAL 2 bytes 1 to 32,767
SERIAL 4 bytes 1 to 2,147,483,647
BIGSERIAL 8 bytes 1 to 922,337,2036,854,775,807
  1. 先创建序列,然后设置字段的自增
CREATE SEQUENCE users_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;

alter table users alter column id set default nextval('users_id_seq');

更多:https://blog.csdn.net/neweastsun/article/details/93369058