当前位置: 首页 > news >正文

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

前言:

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

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

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

一,

查看序列和序列的属性

查看序列 短命令  \ds

postgres=# \dsList of relationsSchema | Name |   Type   |  Owner   
--------+------+----------+----------public | test | sequence | postgres
(1 row)

查看序列的属性详情:

  • 此序列是一个大数字类型的序列,也就是纯数字
  • 初始值是1,也就是start这一列
  • 步长是 1 , 也就是Increment 这一列
  • 最大值是92233、、、、、、  你们自己数吧
  • 如果达到最大值后,此序列是否循环从1开始再次自增?  也就是cycles这一列   ,答案是否 ,no嘛,
  • 缓存数值,一般设置为1,这个无需更改
postgres=# \d testSequence "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_nameFROM pg_class AS seqJOIN pg_namespace nsON (seq.relnamespace = ns.oid)WHERE seq.relkind = 'S'AND NOT EXISTS (SELECT *FROM pg_dependWHERE objid = seq.oidAND deptype = 'a')ORDER BY seq.relname;

输出如下:

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

二,

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

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

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

http://www.lryc.cn/news/206004.html

相关文章:

  • (完全解决)如何输入一个图的邻接矩阵(每两个点的亲密度矩阵affinity),然后使用sklearn进行谱聚类
  • Unity中Shader的ShaderLOD
  • 图像压缩(4)《数字图像处理》第八章 8.3节 数字图像水印
  • C++之lambda匿名函数总结(二百四十五)
  • STM32F103单片机内部RTC实时时钟驱动程序
  • ChinaSoft 论坛巡礼 | 开源软件生态健康度量论坛
  • Leetcode.2698 求一个整数的惩罚数
  • 大数据Flink(一百零二):SQL 聚合函数(Aggregate Function)
  • 因mapjoin加载内存溢出而导致return code 3
  • pip 指定源
  • 嵌入式中的MCU、ARM、DSP、FPGA
  • 二、PHP基础学习[变量]
  • k8s kubeadm配置
  • B-3:Web安全之综合渗透测试
  • 设计模式—设计模式总览
  • C++ 流程控制(分支、循环、跳转)
  • 【网络协议】聊聊TCP的三挥四握
  • Docker镜像仓库
  • 跨界技术:SOCKS5代理在电商、爬虫与游戏领域的应用
  • LeetCode--快速排序
  • 2023年CSP-S赛后总结(2023CSP-S题解)
  • Django viewsets 视图集与 router 路由实现评论接口开发
  • RCE 远程代码执行漏洞分析
  • JDK8新特性:Stream流
  • 【.net core】yisha框架单页面双列表联动效果示例
  • 01. 板载硬件资源和开发环境
  • BlobDetector的使用与参数说明(OpenCV/C++)
  • 行为型模式-空对象模式
  • 爬虫采集如何解决ip被限制的问题呢?
  • 【ARM AMBA Q_Channel 详细介绍】