1. 程式人生 > >Greenplum和Postgresql的主鍵自增

Greenplum和Postgresql的主鍵自增

小寫 var 自己的 sql href default prim 序列 sta

參考: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);

Greenplum和Postgresql的主鍵自增