• 数据库-玩转数据-Pgsql 使用UUID做主键


    一、使用uuid-ossp

    1、安装 uuid-ossp 文件:

    在postgresql数据库中,是不能直接使用UUID函数的,需要手动安装 uuid 的相关文件,才能应用UUID相关的函数.

    2、调用UUID的相应函数:

    在安装了 uuid-ossp 文件后,通过 select 语句 调用UUID的相应函数即可获取到随机id;

    检查postgresql是否支持uuid自动生成函数

    select uuid_generate_v4();
    
    • 1

    若查询报错,创建扩展

    解决方法:
    1.安装 uuid-ossp 文件,在sql编辑器中编写并执行该语句:

    create extension "uuid-ossp" ;
    
    • 1

    2.调用UUID的相应函数,:

    select uuid_generate_v4()select uuid_generate_v1()` 皆可.
    
    • 1

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

    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
    • 2
    • 3
    • 4
    • 5

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

    ALTER TABLE "public"."t_uuid" ALTER COLUMN "id" SET DEFAULT uuid_generate_v4();
    
    • 1

    二、定义序列,再定义主键调用增长函数

    1、定义序列

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

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

    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
    • 3
    • 4
    • 5

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

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

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

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

    查看DDL,会发现方法一和方法二结构是一致的,不同的是方法一定义的序列在表删除时,不会被清除。

  • 相关阅读:
    vue组件的通信
    Zookeeper
    Redis系列之常见数据类型应用场景
    nvm的简介、安装、使用(简单明了)
    Rust 泛型使用过程中的 <T> 和 ::<T> 的区别
    在pandas中使matplotlib动态画子图的两种方法【推荐gridspec】
    PostgreSQL Page结构
    3.DDD基本原理
    泰山OFFICE技术讲座:页面的内容区宽高计算差异
    智能手表上的音频(三):音频文件播放
  • 原文地址:https://blog.csdn.net/s_unbo/article/details/125475105