参考:https://blog.csdn.net/u011042248/article/details/49422305
1、第一种情况就是创建数据表的时候创建主键自增,由于业务需要自己的数据表已经创建了,而且加了保存了很多数据,所以这种方式不能使用,但是记下笔记,方便自己以后使用。
由于Greenplum是从Postgresql发展而来的,由于postgreSQL主键自增需要使用序列,所以Greenplum主键自增也需要使用序列。
使用SERIAL的方式创建ID主键自增,需要注意的是Greenplum和Postgresql区分大小写,所以注意加上双引号。
1 DROP TABLE IF EXISTS "core_data"."users181020"; 2 CREATE TABLE "core_data"."users181020" ( 3 "ID" SERIAL primary key NOT NULL, 4 "ORIDBNAME" varchar(255) DEFAULT NULL, 5 "ORIDBALIAS" varchar(255) DEFAULT NULL, 6 "TABLENAME" varchar(255) DEFAULT NULL, 7 "ORIACCOUNTNUM" varchar(255) DEFAULT NULL, 8 "TARDBNAME" varchar(255) DEFAULT NULL, 9 "TARDBALIAS" varchar(255) DEFAULT NULL, 10 "TARACCOUNTNUM" varchar(11) DEFAULT NULL, 11 "COUNTTIME" timestamp(0) DEFAULT NULL, 12 "TAG" varchar(255) DEFAULT NULL 13 )
注意:自动创建名为users181020_ID_seq的序列,且MAXVALUE=9223372036854775807
红色箭头所指的其他,下拉以后可以看到序列,然后点击序列,可以查看自己创建的序列。由于是正式项目,所以不截图了。
可以查看详细信息:
2、第二种方式是,先创建序列,然后设置字段的自增。
1 CREATE SEQUENCE users181020_ID_seq 2 START WITH 1 #如果你从1递增,那么你可以设置1,由于我的已经存在数据,所以设置最大MAX("ID")就行了。 3 INCREMENT BY 1 4 NO MINVALUE 5 NO MAXVALUE 6 CACHE 1;
比如我的:
1 CREATE SEQUENCE users181020_ID_seq 2 START WITH 100 3 INCREMENT BY 1 4 NO MINVALUE 5 NO MAXVALUE 6 CACHE 1;
然后使用下面的alter table语句就可以将自己的表设置主键自增了。
1 alter table users181020 alter column id set default nextval('users181020_ID_seq');