欢迎投稿

今日深度:

PostgreSQL创建自增序列、查询序列及使用序列代码示例,

PostgreSQL创建自增序列、查询序列及使用序列代码示例,


目录
  • 序列函数:
  • CREATE SEQUENCE 创建序列
  • ALTER SEQUENCE 修改序列:
  • nextval查询下一个序列值:
  • currval查询当前序列值:
  • 批量设置表自增序列值最大值:
  • 总结 

序列函数:

函数返回类型描述
nextval(regclass)bigint递增序列对象到它的下一个数值并且返回该值。这个动作是自动完成的。即使多个会话并发运行nextval,每个进程也会安全地收到一个唯一的序列值。
currval(regclass)bigint在当前会话中返回最近一次nextval抓到的该序列的数值。(如果在本会话中从未在该序列上调用过 nextval,那么会报告一个错误。)请注意因为此函数返回一个会话范围的数值,而且也能给出一个可预计的结果,因此可以用于判断其它会话是否执行过nextval。
lastval()bigint在当前会话中返回最近一次nextval抓到的该序列的数值。(如果在本会话中从未在该序列上调用过 nextval,那么会报告一个错误。)请注意因为此函数返回一
返回当前会话里最近一次nextval返回的数值。这个函数等效于currval,只是它不用序列名为参数,它抓取当前会话里面最近一次nextval使用的序列。如果当前会话还没有调用过nextval,那么调用lastval将会报错。 
setval(regclass, bigint)bigint重置序列对象的计数器数值。设置序列的last_value字段为指定数值并且将其is_called字段设置为true,表示下一次nextval将在返回数值之前递增该序列。
setval(regclass, bigint, boolean)bigint重置序列对象的计数器数值。功能等同于上面的setval函数,只是is_called可以设置为true或false。如果将其设置为false,那么下一次nextval将返回该数值,随后的nextval才开始递增该序列。

CREATE SEQUENCE 创建序列

CREATE SEQUENCE "user_id_seq"
    START WITH 1        --开始值
    INCREMENT BY 1      --每次新增数
    NO MINVALUE         --无最小值
    NO MAXVALUE         --无最大值
    CACHE 1;            --缓存序列数量

ALTER SEQUENCE 修改序列:

ALTER SEQUENCE "user_id_seq"
    START WITH 1        --开始值
    INCREMENT BY 1      --每次新增数
    NO MINVALUE         --无最小值
    NO MAXVALUE         --无最大值
    CACHE 1;            --缓存序列数量

nextval查询下一个序列值:

SELECT nextval('user_info_id_seq')

currval查询当前序列值:

SELECT currval('user_info_id_seq')

批量设置表自增序列值最大值:

SELECT
	'SELECT SETVAL(''' || SUBSTRING ( sequence_name FROM '^(.*)[_]id_seq$' ) || '_id_seq'', (SELECT (MAX(id) + 1) FROM ' || SUBSTRING ( sequence_name FROM '^(.*)[_]id_seq$' ) || ') , true);' AS SQL 
FROM
	information_schema.sequences

总结 

到此这篇关于PostgreSQL创建自增序列、查询序列及使用序列的文章就介绍到这了,更多相关pgsql创建自增序列查询序列内容请搜索PHP之友以前的文章或继续浏览下面的相关文章希望大家以后多多支持PHP之友!

您可能感兴趣的文章:
  • postgresql如何查询重复计数及去重查询
  • PostgreSQL查询和处理JSON数据
  • Postgresql JSON对象和数组查询功能实现
  • GP如何查询并删除重复数据

www.htsjk.Com true http://www.htsjk.com/shujukunews/47445.html NewsArticle PostgreSQL创建自增序列、查询序列及使用序列代码示例, 目录 序列函数: CREATE SEQUENCE创建序列 ALTER SEQUENCE修改序列: nextval查询下一个序列值: currval查询当前序列值: 批量设置表自增...
评论暂时关闭