暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSql主键自动生成的方法

微光伴行 2021-03-25
3961

 前言

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

 创建方法

1、主键自增长

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

定义序列

    CREATE SEQUENCE "public"."t_student_id_seq" 
    INCREMENT 1
    MINVALUE 1
    MAXVALUE 9999999999
    START 1
    CACHE 1;

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

      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")
      );

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

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

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

              CREATE TABLE "public"."t_student_id_seq" (
          "id" serial4,
          "name" varchar(40),
          PRIMARY KEY ("id")
          );

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

          2、创建uuid为主键

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

            select uuid_generate_v4();

            若查询报错,创建扩展

              create extension "uuid-ossp";

              创建表,主键添加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")
                );

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

                  ALTER TABLE "public"."t_uuid" ALTER COLUMN "id" SET DEFAULT uuid_generate_v4();
                  文章转载自微光伴行,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                  评论