• 数据库-玩转数据-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,会发现方法一和方法二结构是一致的,不同的是方法一定义的序列在表删除时,不会被清除。

  • 相关阅读:
    OpenGL ES glut 下载和使用
    字节一面:HTTPS 会加密 URL 吗?
    【Axure高保真原型】多图表动态切换
    如何低门槛开发有趣实用的ZigBee产品?
    Centos7 之PostgresSQL11.x 安装及插件安装
    mac 升级node到指定版本
    【每日一题】补档 CF1678B-Tokitsukaze and Good 01-String | 思维 | 简单
    Tensorflow1架构内核和学习方法论
    柯桥外语学习|考级英语|四六级和高考英语的差距
    Qt 学习(三) —— Qt 模块
  • 原文地址:https://blog.csdn.net/s_unbo/article/details/125475105