暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

PostgreSQL数据库对象(三)之其他对象

原创 lmj 2021-11-24
656

查看之前发布的文章:
数据库对象(一)之基本对象
数据库对象(二)之与函数相关对象

  • SEQUENCE – 序列

序列对象也被称为序列生成器或者就是序列。序列对象都是用CREATE SEQUENCE创建的特殊的单行表。序列对象通常用于为表的行生成唯一的标识符。

序列控制串行数据类型的自动递增。定义序列时,PostgresSQL会自动创建序列,但可以轻松更改初始值、增量和下一个值。因为序列本身就是对象,所以多个表可以使用同一个序列对象,这允许您创建可以跨表的唯一键值。SQL Server和Oracle都有序列对象,但必须手动创建它们。

例:

-- 创建名为 serial 的上升序列,最小为0 ,步长为2,从4开始自增
postgres=# CREATE TEMP SEQUENCE serial AS int INCREMENT 2 MINVALUE 0 START 4 ;
CREATE SEQUENCE

-- nextval(regclass) 递增序列并返回新值
postgres=# SELECT nextval('serial');
 nextval
---------
       4
(1 row)

postgres=# SELECT nextval('serial');
 nextval
---------
       6
(1 row)

-- currval(regclass) 返回最近一次用nextval获取的指定序列的值
postgres=# SELECT currval('serial');
 currval
---------
       6
(1 row)

--  lastval() 返回最近一次用nextval获取的任何序列的值
postgres=# SELECT lastval();
 lastval
---------
       6
(1 row)

-- setval(regclass, bigint) 设置序列的当前值
postgres=# SELECT setval('serial',25);
 setval
--------
     25
(1 row)

postgres=# SELECT nextval('serial');
 nextval
---------
      27
(1 row)
  • EXTENSION – 扩展

PostgreSQL 9.1中引入了此功能,将所有这些对象收集到一个单一包中有助于简化数据库管理,称这样一个包为一个扩展。扩展在概念上与Oracle软件包类似,是分发附加组件的首选方法。并且应该按照开发人员的说明将扩展文件安装到服务器上,通常包括安装扩展二进制文件和脚本。

当添加扩展时,默认会在public模式下。PostgreSQL不会让你删除包含在一个扩展中的个体对象,除非删除整个扩展。

CREATE EXTENSION命令依赖每一个扩展都有的控制文件,控制文件必须被命名为扩展的名称加上一个后缀.control,并且必须被放在安装的SHAREDIR/extension目录中。

安装完成后,不需要所有数据库中都启用安装的扩展,只需在需要使用扩展的数据库中使用特定的扩展。建议创建一个单独的模式来容纳所有扩展,甚至创建一个单独的模式来容纳每个大型扩展。

最后修改时间:2021-11-24 23:43:27
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论