PostgreSQL如何为主键创建自增序列(Sequences)

2023-05-16

引言

在持久层框架如Hibernate(JPA)、Mybatis中经常会用到Sequences(函数)去创建主键值,
PostgreSQL中,用serial数据类型的主键,数据库会自动创建Sequences,
那么我们自己设置的integer主键,如何设置添加Sequences呢?

目录

  • 引言
  • 目录
  • 一测试环境
      • pgadmin4 点我查看如何安装
      • psql PostgreSQL 965
      • 结构图
  • 二创建表
      • 表名 mytable
      • 主键名 myid
      • 模式名 gys
      • 用户名 postgres
      • SQL
  • 三创建Sequences
      • Sequences 名称 mytable_myid_seq
      • 主键名 myid
      • 模式名 gys
    • 图形pgadmin管理
    • SQL创建
      • SQL
  • 四为主键设置Sequences
  • 五测试Sequences函数
  • 参考资料
  • 附录序列函数

一.测试环境:

1. pgadmin4 <点我查看如何安装>

(没有pgadmin4,请用命令行+SQL代替)

2. psql (PostgreSQL) 9.6.5

3. 结构图:

这里写图片描述

二.创建表:

1.表名 mytable

2.主键名 myid

3.模式名 gys

4.用户名 postgres

测试数据库中,创建表:(gys 是模式名,类似namespace,默认是public)

SQL:

CREATE TABLE gys.mytable
(
    myid integer NOT NULL,
    PRIMARY KEY (myid)
)
WITH (
    OIDS = FALSE
);

ALTER TABLE gys.mytable
    OWNER to postgres;

三.创建Sequences:

1. Sequences 名称 mytable_myid_seq

2.主键名 myid

3.模式名 gys

图形pgadmin管理:

在pgadmin中,我们可以在sequences上右键,create -> sequences
如图:
Step 1.
这里写图片描述

Step 2.
这里写图片描述

Step 3.

这里写图片描述

详细参数1

OK了,生成的SQL:

CREATE SEQUENCE gys.mytable_myid_seq
    INCREMENT 1
    START 1
    MINVALUE 1
    MAXVALUE 99999999
    CACHE 1;

ALTER SEQUENCE gys.mytable_myid_seq
    OWNER TO postgres;

这里写图片描述

SQL创建:

语法:

CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ]
    [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
    [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]

SQL:

CREATE SEQUENCE gys.mytable_myid_seq
    INCREMENT 1
    START 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 2;

四.为主键设置Sequences:

执行SQL:

alter table gys.mytable alter column myid set default nextval('gys.mytable_myid_seq');

五.测试Sequences函数:

所有序列函数参见”附录:序列函数

SELECT nextval('gys.mytable_myid_seq');

这里写图片描述

INSERT INTO gys.mytable VALUES (nextval('gys.mytable_myid_seq'));
SELECT myid FROM gys.mytable;

这里写图片描述

参考资料:

https://www.postgresql.org/docs/8.1/static/sql-createsequence.html

https://www.postgresql.org/docs/9.1/static/functions-sequence.html

http://www.cnblogs.com/mchina/archive/2013/04/10/3012493.html

http://francs3.blog.163.com/blog/static/40576727201111715035318/

http://www.cnblogs.com/nirvana7/archive/2011/12/27/2303673.html

附录:序列函数

函数返回类型描述
nextval(regclass)bigint递增序列对象到它的下一个数值并且返回该值。这个动作是自动完成的。即使多个会话并发运行nextval,每个进程也会安全地收到一个唯一的序列值。
currval(regclass)bigint在当前会话中返回最近一次nextval抓到的该序列的数值。(如果在本会话中从未在该序列上调用过 nextval,那么会报告一个错误。)请注意因为此函数返回一个会话范围的数值,而且也能给出一个可预计的结果,因此可以用于判断其它会话是否执行过nextval。
lastval()bigint返回当前会话里最近一次nextval返回的数值。这个函数等效于currval,只是它不用序列名为参数,它抓取当前会话里面最近一次nextval使用的序列。如果当前会话还没有调用过nextval,那么调用lastval将会报错。
setval(regclass, bigint)bigint重置序列对象的计数器数值。设置序列的last_value字段为指定数值并且将其is_called字段设置为true,表示下一次nextval将在返回数值之前递增该序列。
setval(regclass, bigint, boolean)bigint重置序列对象的计数器数值。功能等同于上面的setval函数,只是is_called可以设置为true或false。如果将其设置为false,那么下一次nextval将返回该数值,随后的nextval才开始递增该序列。

  1. 参数见:https://www.postgresql.org/docs/8.1/static/sql-createsequence.html ↩
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PostgreSQL如何为主键创建自增序列(Sequences) 的相关文章

  • UNIX 环境高级编程之我见

    UNIX环境高级编程 xff08 第二版 xff09 xff08 人民邮电出版社 xff09 美 W Richard Stevens amp Stephen A Rago 著 本书的主要结构分为以下几个部分 xff1a xff08 1 xf
  • mac brew install

    brew cask install myprogram base darren 64 Darren 2 project brew cask install docker Error Unknown command cask brew ins
  • mac/linux 系统批量计算文件md5命令

    find type f print0 xargs 0 md5
  • android 电池充电状态记录

    摘抄源码记录下 http androidxref com 9 0 0 r3 xref frameworks native include batteryservice BatteryServiceConstants h This file
  • python 输入三个变量,然后按小到大输出(解析)

    python 实例解析 xff08 1 xff09 vim 2 python py x 61 int input 39 please input x 39 y 61 int input 39 please input y 39 z 61 i
  • Linux系统调用Hook姿势总结

    http www cnblogs com LittleHann p 3854977 html 主题 Linux 相关学习资料 http xiaonieblog com post 61 121 http hbprotoss github io
  • 利用WireShark进行DNS协议分析

    一 准备工作 系统是Windows 8 1Pro 分析工具是WireShark1 10 8 Stable Version 使用系统Ping命令发送ICMP报文 二 开始工作 打开CMD exe键入 ping www oschina net
  • DNS协议详解及报文格式分析

    DNS协议详解及报文格式分析 Posted on 2017 06 18 by Jocent No Comments 目录 一 DNS协议理论知识 1 1 域名结构1 2 域名服务器1 3 域名解析过程 二 DNS协议报文格式 2 1 头部2
  • 给springboot加项目名

    1 首先需要在application properties配置文件中加 server servlet context path 配置成功后再浏览器上的上输入localhost 8080 即可访问 2 在使用vue等js插件的时 xff0c
  • 命令行输出的内容重定向保存到文件里

    文章目录 1 linux2 windows 1 linux 执行命令 xff0c 不管是python还是c 43 43 xff0c 只要是输出在命令行里的 xff0c 就可以使用重定向把输出的内容保存到一个文件里 例如 xff1a pyth
  • android studio unresolved reference:xx问题解决方案汇总

    android studio unresolved reference xff1a xx问题解决方案汇总 目录第一种 xff0c 重启法 xff0c clean 43 invalidate caches restart第二种 xff0c g
  • Router 选择

    Connected Dominating Set Example of a Connected Dominating Set Router 必须形成一个 CDS xff08 Connected Dominating Set xff0c 连接
  • devtool: unset _PYTHON_SYSCONFIGDATA_NAME

    问题 在 Ubuntu 20 04 1 LTS 上进行编译Yocto时报错 xff0c 出现如下错误 xff1a bb data smart ExpansionError Failure expanding variable SRCPV e
  • VsCode 配置PySide6及测试

    目录 VSCode插件安装安装Python插件安装PySide6插件 PySide6安装PySide6配置VSCode创建UI文件 在这里插入图片描述 https img blog csdnimg cn cbf7cd76d7d84048ab
  • Ubuntu 14.04 Desktop的Raid1安装总结

    Ubuntu 14 04 Desktop的Raid1安装总结 安装基于Ubuntu14 04 Desktop的Raid1 由于采用UEFI GPT方式作为系统启动方式 xff0c 在安装过程中出现了很多异常情况 本文记录安装的过程 安装步骤
  • sem_wait sem_post信号量操作进本函数

    sem wait sem post 信号量的数据类型为结构sem t xff0c 它本质上是一个长整型的数 函数sem init xff08 xff09 用来初始化一个信号量 它的原型为 xff1a extern int sem init
  • 常见gcc编译警告整理(开始)

    1 warning no newline at end of file 在文件最后一行加上回车键 解释 xff1a 在 Rationale for the C99 standard 一文中 xff0c 有C99的相关信息 xff1a A b
  • 对于结构体变量赋值的误区

    以前在使用结构体时没有在结构体变量之间直接赋值 xff0c 今天同事在查看别人的代码时 xff0c 发现有两个结构体变量直接赋值的语句当时感觉这个语句不对 xff0c 认为在一个结构体里边 xff0c 既有一般的无符号整形与数组 xff0c
  • 线程同步(互斥锁与信号量的作用与区别)

    信号量用在多线程多任务同步的 xff0c 一个线程完成了某一个动作就通过信号量告诉别的线程 xff0c 别的线程再进行某些动作 xff08 大家都在semtake的时候 xff0c 就阻塞在 哪里 xff09 而互斥锁是用在多线程多任务互斥
  • 误解程序运行(从单片机到开始)

    误解程序运行 从单片机到开始 关于程序的执行 xff0c 以前想的不多 xff0c 没有意识到一个程序在运行时 xff0c 从哪里读指令 xff0c 数据又写在哪里 最近在看CSAPP时这个念头经常在脑袋中晃荡 从单片机上知道 xff0c

随机推荐

  • ssh配置key后提示Server refused our key

    文章目录 1 确认问题2 解决问题 1 确认问题 参考 xff1a Putty Getting Server refused our key Error 为了确认ssh具体的错误 xff0c 可以去 etc ssh sshd config中
  • Out-of-Bounds Memory References and Buffer Overflow

    callee pushl edp save edp on stack movl esp edp pushl ebx save ebx subl 20 esp popl ebx restore ebx popl edp restore
  • 电子信息工程四年学习之思

    毕业后 xff0c 回顾四年学习历程发现 xff0c 当时以为的明白 xff0c 到现在都是那时的不明白 或许是自己的经历 xff08 参加比赛比较多 xff09 导致了现在的反思 但是 xff0c 回顾那个时候的课程设置 xff0c 却都
  • 将要到来的三大技术革命与联系

    http www csdn net article 2013 02 14 2814128 2013大数据 http www csdn net article 2013 02 15 2814135 bigdata is coming 大数据
  • Keil的常见编译警告

    1 warning 767 D conversion from pointer to smaller integer 解释 xff1a 将指针转换为较小的整数 影响 xff1a 可能造成的影响 xff1a 容易引起数据截断 xff0c 造成
  • 《大数据时代》之后

    现在想想也不记得当时是怎么找到 大数据时代 这本书的 xff0c 好像是在查找数据库方面的书 xff0c 看到亚马逊推荐的书里有这本 xff0c 发现最近才出版的就买一本回来看看 然而这个过程中 xff0c 其实自己已经得到了大数据带来的影
  • 《代码大全》笔记

    最近将去年毕业时 xff0c 大神推荐的 代码大全 看完了 xff08 已经过去一年了 xff0c 要十分感谢推荐 xff0c 还有凤林兄的 深入理解计算机系统 xff09 零零碎碎的时间 xff0c 发现很多东西虽然在书中标记了 xff0
  • 《编程精粹》思之代码与产品

    之前眼中有代码无产品 xff0c 现在眼中有产品有代码 xff0c 什么时候能做到有产品无代码 xff1f 还需要努力 刚开始实习的时候 xff0c 总喜欢在程序中使用 p 43 1 61 而不是p 1 来给入参 xff0c 甚至于用来给定
  • 杂记:pyinstaller 常用参数和可执行文件启动目录的注意事项

    pyinstaller 常用参数 所谓的常用参数 xff0c 就是指 xff1a 不想看详细帮助不关心版本 一来 pip list 就能知道版本 xff0c 不需要专门记 pyinstaller 的参数 二来能用就行 达到生成 exe 的目
  • 关于spring核心配置文件中的各项主要配置

    1 xff1a spring的核心配置文件中的各种配置 spring的核心配置文件的名字 叫做 applicationContext xml xff0c 后期也可以通过配置文件中的配置修改名称 xff0c 在web xml中进行如下配置 x
  • linux安装pgadmin4--postgresql管理工具

    目录 目录 一 下载二 安装三 配置四 总结声明 pip类似RedHat里的yum xff0c 安装起Python包来十分方便 一 下载 1 1 安装pgadmin4 首先确保有python环境 版本均可 xff0c 安装pip span
  • DICOM图像转Nifti格式-SimpleITK

    文章目录 1 SimpleITK实现1 1 代码 2 读图像的meta信息 其实SimpleITK文档里都有 xff0c 直接搬过来 1 SimpleITK实现 1 1 代码 span class token keyword import
  • Linux 压缩(打包)文件夹 tar/zip

    tar 压缩方法 xff1a tar zcvf home xahot tar gz xahot tar zcvf 打包后生成的文件名全路径 要打包的目录 例子 xff1a 把 xahot文件夹打包后生成一个 home xahot tar g
  • 软件工程中的图:流程图,数据流图

    最近在学习这方面的知识 为了可以不必一辈子做程序员 必须学会更多的知识 感谢 http blog csdn net haovip123 article details 19128253 的分享 侵删 软件工程中的那些图 xff1a 系统流程
  • 装系统:用老毛桃winPE给移动硬盘装系统(windows):亲测装机成功~

    初稿 xff1a 我先去整理点图片 资料 xff1a 稍后补全 女朋友笔记本换了个固态 xff0c 替下一个老机械硬盘来 xff0c 正好手头上少win系统 xff0c 遂尝试改装成移动硬盘 43 win系统 xff1a 准备工作 xff1
  • firefox浏览器一分钟去广告--去广告插件安装教程(adblock plus)

    一键去广告 ABP adblock plus https adblockplus org 被广告弄得搓火吗 xff1f 被跟随鼠标的标语弄得烦心吗 xff1f 被横幅弄得感到厌恶吗 xff1f 立即安装 Adblock Plus 来重新取得
  • 骇客代码雨!linux终端黑客帝国数字流效果一分钟教程

    黑客帝国那么炫酷的代码雨怎么来的 xff1f 我怎么能做到 xff1f hack 代码雨在自己终端上实现 xff1a 代码雨 先上效果图 xff1a 开始教程 xff1a 执行 sudo apt get install cmatrix cm
  • % is not in the sudoers file 问题解决:非root用户使用sudo报错

    概述 xff1a 在使用Redhat系列 centOS 等系统时 xff0c 使用非root用户执行sudo可能会遇到 NAME is not in the sudoers file 问题 这是由于这两类系统并没有把非root用户默认的添加
  • Postgresql备份与还原命令pg_dump

    postgresql数据库的备份和还原命令pg dump 常用命令 xff1a 备份 xff1a pg dump span class hljs attribute U span postgres span class hljs attri
  • PostgreSQL如何为主键创建自增序列(Sequences)

    引言 在持久层框架如Hibernate JPA Mybatis中经常会用到Sequences 函数 去创建主键值 xff0c PostgreSQL中 xff0c 用serial数据类型的主键 xff0c 数据库会自动创建Sequences