postgresql|数据库|序列Sequence的创建和管理

前言:

Sequence也是postgresql数据库里的一种对象,其属性如同索引一样,但通常Sequence是配合主键来工作的,这一点不同于MySQL,MySQL的主键自增仅仅是主键的属性做一个更改,而postgresql的主键自增是需要序列这个对象来配合的,也就是说,如果仅仅创建了一个序列,但此序列没有和任何主键对象绑定,那么,这个序列并没有什么实际的意义,这一点一定要注意。

当然了,postgresql里面的序列因为是一个对象,因此,在数据库开发中是非常的方便的,比起MySQL要先进很多的哦。

那么,下面就序列的增删改查和序列的管理这些问题做一个简单的介绍。

一,

查看序列和序列的属性

查看序列 短命令  \ds

postgres=# \ds
          List of relations
 Schema | Name |   Type   |  Owner   
--------+------+----------+----------
 public | test | sequence | postgres
(1 row)

查看序列的属性详情:

  • 此序列是一个大数字类型的序列,也就是纯数字
  • 初始值是1,也就是start这一列
  • 步长是 1 , 也就是Increment 这一列
  • 最大值是92233、、、、、、  你们自己数吧
  • 如果达到最大值后,此序列是否循环从1开始再次自增?  也就是cycles这一列   ,答案是否 ,no嘛,
  • 缓存数值,一般设置为1,这个无需更改
postgres=# \d test
                            Sequence "public.test"
  Type  | Start | Minimum |       Maximum       | Increment | Cycles? | Cache 
--------+-------+---------+---------------------+-----------+---------+-------
 bigint |     1 |       1 | 9223372036854775807 |         1 | no      |     1

此序列是否被绑定到某个表的主键:

查询该序列是否有值,可以看到,并没有,报错,还没有被定义在此会话期间,其实此序列我们也可以称它为孤儿序列

postgres=# select currval('test');
ERROR:  currval of sequence "test" is not yet defined in this session

运行以下命令查询所有的孤儿序列:

SELECT ns.nspname  AS schema_name
      ,seq.relname AS seq_name
  FROM pg_class AS seq
  JOIN pg_namespace ns
    ON (seq.relnamespace = ns.oid)
 WHERE seq.relkind = 'S'
   AND NOT EXISTS (SELECT *
          FROM pg_depend
         WHERE objid = seq.oid
           AND deptype = 'a')
 ORDER BY seq.relname;

输出如下:

如果绑定了某个表的主键,那么删除的时候会报错,报错信息里会提示依赖于哪个表,后面介绍删除的时候在详细说明。

二,

创建序列和绑定序列到某个表的某个主键

这里分为两种情况,第一种是已有序列的绑定,第二种是新建序列后绑定到某个表的某个主键

告个假,明天在更新剩余部分~~~主要是夜深了~~~~ 未完待续~~~~~!!!!!!!


http://www.niftyadmin.cn/n/5119618.html

相关文章

无中微子双贝塔衰变

无中微子双贝塔衰变 无中微子双贝塔衰变的原子核理论 双贝塔衰变的研究缘起 玛丽亚格佩特-梅耶(Maria Goeppert-Mayer)在1935年提出了双贝塔衰变的可能性埃托雷马约拉纳(Ettore Majorana)在1937年证明了如果中微子是否是Majorana…

RabbitMQ高级篇 笔记

这是一些高级的内容。 RabbitMQ还是运行在网络上的,倘若遇到了网络故障,mq自己挂了,出异常了,都会造成最终状态不一致的问题。这就是可靠性问题。 可靠性:一个消息发送出去之后,至少被消费1次。 要解决这3个…

spi的基本知识、软件spi、硬件spi(ADXL362为测试对象)

一、spi基础知识 1.1、spi基础知识一 SPI(Serial Peripheral Interface,串行外设接口)是由摩托罗拉(Motorola)在1980前后提出的一种全双工同步串行通信接口,它用于MCU与各种外围设备以串行方式进行通…

性能测试 - 微服务架构

1、微服务架构和单体应用架构有什么区别? 微服务架构和单体应用架构的最大区别在于应用的拆分方式。单体应用是将所有功能模块都打包在一起,而微服务架构则是将一个巨大的单体应用拆分为很多小的互相连接的微服务(比如项目中,将整…

tomcat的负载均衡、动静分离(nginx联动)

动静分离: 访问静态页面和动态页面分开 实现动态和静态页面负载均衡 实验5台虚拟机 一、动态负载均衡 3台虚拟机模拟: 代理服务器:30 tomcat动态页面:21、22 代理服务器: proxy_pass http://tomcat; proxy_set_h…

zabbix6自动化配置监控项监控GPU

zabbix6监控GPU运行状态 部署配置开发GPU监控服务配置扩展参考链接: 关键词: zabbix 监控 GPU 监控项自动化注册 脚本监控服务 部署 部署具体细节就不详细展开了,我这里有三台机器,其中一台部署docker版的zabbix server 然后在这…

Postman环境配置

Postman环境配置 安装Postman安装node.js安装newman安装htmlextra安装git注册163邮箱用163邮箱注册gitee在pycharm中安装gitee详细文档 安装Postman 网址:https://www.postman.com/downloads/ 注册一个账号即可 安装node.js 安装newman npm install -g newman …

矢量图形编辑软件 illustrator 2023 mac 中文软件特点

illustrator 2023 mac是一款矢量图形编辑软件,用于创建和编辑排版、图标、标志、插图和其他类型的矢量图形。 illustrator 2023 mac软件特点 矢量图形:illustrator创建的图形是矢量图形,可以无限放大而不失真,这与像素图形编辑软…