这里记录一下pg数据库主键自增
MySQL 设置主键自增策略比较简单 只需要创建表的时候使用关键字AUTO_INCREMENT就可以完成主键自增。但是pg数据库不同于mysql,之前试了 SERIAL 结果并不管用。
这里只记录给已创建的表加入主键自增(适用性广些)
说道主键自增就要拆分两部分来说:
一: 主键;
二: 自增策略;
1.首先我们通过快捷方式或者语句方式创建表完毕。
2.接下来我们要创建自增策略(自增策略包括起始值与最大值的设置)
CREATE SEQUENCE “public”.“table_user_user_id_seq”
INCREMENT 1
START 1
MINVALUE 1
MAXVALUE 99999999
CACHE 1;
这里可以看到我们创建 Sequence 在哪个模式下呢?在表所在的同一模式下。自增策略名称是什么呢?就是模式后面的 table_user_user_id_seq;
3.最后我们则可以给想要添加主键自增的表加上我们刚刚创建的主键自增策略
alter table “public”.“table_user” alter column user_id set default nextval(‘table_user_user_id_seq’);
创建自增的三种方式
--方法一
create table test_a
(
id serial,
name character varying(128),
constraint pk_test_a_id primary key( id)
);
NOTICE: CREATE TABLE will create implicit sequence "test_a_id_seq" for serial column "test_a.id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "pk_test_a_id" for table "test_a"
CREATE TABLE
--方法二
create table test_b
(
id serial PRIMARY KEY,
name character varying(128)
);
NOTICE: CREATE TABLE will create implicit sequence "test_b_id_seq" for serial column "test_b.id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "test_b_pkey" for table "test_b"
CREATE TABLE
--方法三
create table test_c
(
id integer PRIMARY KEY,
name character varying(128)
);
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "test_c_pkey" for table "test_c"
CREATE TABLE
CREATE SEQUENCE test_c_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
alter table test_c alter column id set default nextval('test_c_id_seq');