目录
  1. 1. 前言
  2. 2. 创建方法
PostgreSql主键自动生成的方法

前言

postgresql不同于mysql数据库,mysql建表时通过auto_increment关键字就可以实现主键自增, 但postgresql是通过序列和函数实现主键自动生成。

创建方法

1、主键自增长
方法一:定义序列,再定义主键调用增长函数实现
定义序列

1
2
3
4
5
6
CREATE SEQUENCE "public"."t_student_id_seq" 
 INCREMENT 1 
 MINVALUE 1 
 MAXVALUE 9999999999 
 START 1 
 CACHE 1;

创建表,主键添加增长函数

1
2
3
4
5
CREATE TABLE "public"."t_student" (
  "id" int4 NOT NULL DEFAULT nextval('t_student_id_seq'::regclass),
  "name" varchar(40) COLLATE "pg_catalog"."default",
  CONSTRAINT "t_student_pkey" PRIMARY KEY ("id")
);

对于已建好的表,更改主键字段设置即可

1
2
ALTER TABLE "public"."t_student" ALTER COLUMN "id" SET DEFAULT 
nextval('t_student_id_seq'::regclass);

方法二:将主键字段定义为serial4类型

1
2
3
4
5
CREATE TABLE "public"."t_student_id_seq" (
  "id" serial4,
  "name" varchar(40),
  PRIMARY KEY ("id")
);

查看DDL,会发现方法一和方法二结构是一致的,不同的是方法一定义的序列在表删除时,不会被清除。
2、创建uuid为主键
检查postgresql是否支持uuid自动生成函数

1
select uuid_generate_v4();

若查询报错,创建扩展

1
create extension "uuid-ossp";

创建表,主键添加uuid生成函数

1
2
3
4
5
CREATE TABLE "public"."t_uuid" (
  "id" varchar(36) COLLATE "pg_catalog"."default" NOT NULL DEFAULT uuid_generate_v4(),
  "name" varchar(40) COLLATE "pg_catalog"."default",
  CONSTRAINT "t_uuid_pkey" PRIMARY KEY ("id")
);

对于已经建好的表,更改主键字段设置

1
ALTER TABLE "public"."t_uuid" ALTER COLUMN "id" SET DEFAULT uuid_generate_v4();
文章作者: 微光
文章链接: http://www.guduke.cn/2020/08/12/postgresql-primary/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 微光
打赏
  • 微信
  • 支付宝

评论