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

前言:

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

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

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

一,

查看序列和序列的属性

查看序列 短命令 \ds

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

查看序列的属性详情:

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

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

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

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

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

bash 复制代码
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;

输出如下:

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

二,

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

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

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

相关推荐
RestCloud16 小时前
SQL Server到Hive:批处理ETL性能提升30%的实战经验
数据库·api
RestCloud16 小时前
为什么说零代码 ETL 是未来趋势?
数据库·api
JuiceFS17 小时前
从 MLPerf Storage v2.0 看 AI 训练中的存储性能与扩展能力
运维·后端
ClouGence18 小时前
CloudCanal + Paimon + SelectDB 从 0 到 1 构建实时湖仓
数据库
chen9451 天前
mysql 3节点mgr集群部署
运维·后端
LH_R1 天前
OneTerm开源堡垒机实战(三):功能扩展与效率提升
运维·后端·安全
dessler1 天前
Hadoop HDFS-高可用集群部署
linux·运维·hdfs
DemonAvenger1 天前
NoSQL与MySQL混合架构设计:从入门到实战的最佳实践
数据库·mysql·性能优化
AAA修煤气灶刘哥2 天前
后端人速藏!数据库PD建模避坑指南
数据库·后端·mysql
RestCloud2 天前
揭秘 CDC 技术:让数据库同步快人一步
数据库·api