PG中实现自增字段的三种方式:
- 标识列 (IDENTITY)
- 序列 (SEQUENCE)
- Serial类型
自增字段主要用于实现自增主键或生成唯一版本号
1.1 标识列 (IDENTITY)
标识列是SQL标准推荐实现自增的方式
示例
CREATE TABLE t_user (
user_id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY ,
user_name varchar(50) NOT NULL UNIQUE
)
INSERT INTO t_user (user_name) value ('tony')
说明:
-
创建一个名为
t_user
的表 CREATE TABLE t_user () -
字段
user_id
为integer类型 user_id integer定义为标识列且总是按照标识列生成(由系统生成) GENERATED ALWAYS AS IDENTITY
定义为主键 PRIMARY KEY
-
字段
user_name
为varchar类型约束其不为空且唯一 NOT NULL UNIQUE
-
插入一条数据 INSERT INTO t_user (user_name) value (‘tony’)
由于
user_id
是使用标识列实现的自增主键 由系统赋值 因此插入时只需指定user_name
的值即可
原理
定义标识列之后系统后台会自动创建并维护一个名为tablename_column_seq
的序列 基于此序列生成自增数据
-- SEQUENCE: public.t_user_user_id_seq
-- DROP SEQUENCE IF EXISTS public.t_user_user_id_seq;
CREATE SEQUENCE IF NOT EXISTS