方法一:创建表时,给直接使用serial类型
自增类型 别名
smallserial serial2
serial serial4
bigserial serial8
方法二:表创建了,字段类型是int类型,此时也可以设置该字段为自增类型
如表 public.test 字段类型如下:
字段 类型
id bigint primary key
name varchar(10)
第一步:创建一个自增序列
create sequence public.test_id_seq increment by 1 minvalue 1 no maxvalue start with 1;
第二步:将public.test 的字段id设置默认值为该序列
alter table public.test alter column id set default nextval('public.test_id_seq');
第三步:如果表中已有多条记录,继续插入数值且防止id不冲突
查看id的最大值
select max(id) from public.test; #例如返回 4
查看新建序列的下一个值
select nextval('public.test_id_seq'::regclass); #例如返回2
此时不带id插入记录肯定会插入失败,id冲突,设置id下一个值为最大值+1
方法1:
select setval('public.test_id_seq'::regclass,5, false);
方法2:
alter sequence crm.crm_user_temp_id_seq restart with 5
方法3:
可以创建序列时,先获取id的最大值,之后将该序列的起始值置为max(id)+1