Greenplum和Postgresql的主键自增

时间:2021-12-20 00:28:41

参考:https://blog.csdn.net/u011042248/article/details/49422305

1、第一种情况就是创建数据表的时候创建主键自增,由于业务需要自己的数据表已经创建了,而且加了保存了很多数据,所以这种方式不能使用,但是记下笔记,方便自己以后使用。
由于Greenplum是从Postgresql发展而来的,由于postgreSQL主键自增需要使用序列,所以Greenplum主键自增也需要使用序列。
使用SERIAL的方式创建ID主键自增,需要注意的是Greenplum和Postgresql区分大小写,所以注意加上双引号。

 DROP TABLE IF EXISTS "core_data"."users181020";
CREATE TABLE "core_data"."users181020" (
"ID" SERIAL primary key NOT NULL,
"ORIDBNAME" varchar() DEFAULT NULL,
"ORIDBALIAS" varchar() DEFAULT NULL,
"TABLENAME" varchar() DEFAULT NULL,
"ORIACCOUNTNUM" varchar() DEFAULT NULL,
"TARDBNAME" varchar() DEFAULT NULL,
"TARDBALIAS" varchar() DEFAULT NULL,
"TARACCOUNTNUM" varchar() DEFAULT NULL,
"COUNTTIME" timestamp() DEFAULT NULL,
"TAG" varchar() DEFAULT NULL
)

注意:自动创建名为users181020_ID_seq的序列,且MAXVALUE=9223372036854775807
Greenplum和Postgresql的主键自增

红色箭头所指的其他,下拉以后可以看到序列,然后点击序列,可以查看自己创建的序列。由于是正式项目,所以不截图了。
Greenplum和Postgresql的主键自增

可以查看详细信息:

Greenplum和Postgresql的主键自增

2、第二种方式是,先创建序列,然后设置字段的自增。

 CREATE SEQUENCE users181020_ID_seq
START WITH #如果你从1递增,那么你可以设置1,由于我的已经存在数据,所以设置最大MAX("ID")就行了。
INCREMENT BY
NO MINVALUE
NO MAXVALUE
CACHE ;

比如我的:

 CREATE SEQUENCE users181020_ID_seq
START WITH
INCREMENT BY
NO MINVALUE
NO MAXVALUE
CACHE ;

然后使用下面的alter table语句就可以将自己的表设置主键自增了。

 alter table users181020 alter column id set default nextval('users181020_ID_seq');