• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Postgresql实现主键自增

武飞扬头像
小白鸭
帮助5

Postgresql实现主键自增

方法一

如果是使用navicat(我这是navicat15,不同的版本应该是一样的),直接在建表的时候选标识即可,如图

学新通
随便选一个即可,好像没差别,我都试过,我这选的第二个,generated by default
我们来测试一下

学新通
确实有成功插入,主键是自动生成的
学新通
我看了一下它的建表SQL语句是这样的,在建表的时候就指定了id的步长、最小值、最大值和开始值

CREATE TABLE "public"."t_test_gen" (
  "id" int4 NOT NULL GENERATED BY DEFAULT AS IDENTITY (
	INCREMENT 1
	MINVALUE  1
	MAXVALUE 2147483647
	START 1
  ),
  "name" varchar(255) COLLATE "pg_catalog"."default",
  CONSTRAINT "t_test_gen_pkey" PRIMARY KEY ("id")
)
;

ALTER TABLE "public"."t_test_gen" OWNER TO "postgres";

方法二

我发现在有些情况下,你建表的时候并没有这个“标识”(比如我在centos上的pgsql建表就没有),如图

学新通

这时候就得自己建一个序列来让主键自动生成了,如图

学新通

sql语句如下

create SEQUENCE t_test_gen_id_seq start 1

好了,现在我们再来测试一下

学新通

发现失败了,因为我们只是创建了序列,并没有使用,接下来我们来使用它,在id的默认值里选中序列

nextval('t_test_gen_id_seq'::regclass)

学新通

接下来我们再来试试,这回成功了

学新通

来看看结果

学新通
我们来看看SQL语句

CREATE TABLE "public"."t_test_gen" (
  "id" int4 NOT NULL DEFAULT nextval('t_test_gen_id_seq'::regclass),
  "name" varchar(255) COLLATE "pg_catalog"."default",
  CONSTRAINT "t_test_gen_pkey" PRIMARY KEY ("id")
)
;

ALTER TABLE "public"."t_test_gen" OWNER TO "postgres";

٩(๑❛ᴗ❛๑)۶

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfhagfi
系列文章
更多 icon
同类精品
更多 icon
继续加载