查看之前发布的文章:
数据库对象(一)之基本对象
数据库对象(二)之与函数相关对象
序列对象也被称为序列生成器或者就是序列。序列对象都是用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)
PostgreSQL 9.1中引入了此功能,将所有这些对象收集到一个单一包中有助于简化数据库管理,称这样一个包为一个扩展。扩展在概念上与Oracle软件包类似,是分发附加组件的首选方法。并且应该按照开发人员的说明将扩展文件安装到服务器上,通常包括安装扩展二进制文件和脚本。
当添加扩展时,默认会在public模式下。PostgreSQL不会让你删除包含在一个扩展中的个体对象,除非删除整个扩展。
CREATE EXTENSION命令依赖每一个扩展都有的控制文件,控制文件必须被命名为扩展的名称加上一个后缀.control,并且必须被放在安装的SHAREDIR/extension目录中。
安装完成后,不需要所有数据库中都启用安装的扩展,只需在需要使用扩展的数据库中使用特定的扩展。建议创建一个单独的模式来容纳所有扩展,甚至创建一个单独的模式来容纳每个大型扩展。
最后修改时间:2021-11-24 23:43:27
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




