PostgreSQL没有主键自增,我们需要手动创建一个序列来实现主键自增,以下是设置表主键自增序列的步骤:
-
创建表后,我们在控制台输入
CREATE SEQUENCE “public”.“表名_主键字段 _seq” //主键序列名
INCREMENT 1 //每次自增单位数为1
MINVALUE 1 //最小值
START 2 //起始值
CACHE 1; //预分配值的个数 -
编辑表主键字段,设置默认值,保存执行
nextval(‘主键序列名’::regclass)注意:在我们新增数据时,偶尔会发生自增序列生成的主键值已存在或者远小于已有数据中主键的值从而产生异常或存在隐藏异常。
预防这种情况的发生,提供以下两种方案:
(a) 我们在创建主键序列时,将START起始值设置到已有数据主键最大值+1
(b) 我们可以通过执行 SELECT setval(‘主键序列名’, (SELECT MAX(主键ID) FROM 表名)+1) 命令达到目的