首页 > 其他分享 >openGauss SEQUENCE函数

openGauss SEQUENCE函数

时间:2022-11-11 18:08:40浏览次数:47  
标签:insert last 函数 nextval SEQUENCE 序列 openGauss id

SEQUENCE函数

序列函数为用户从序列对象中获取后续的序列值提供了简单的多用户安全的方法。

  • nextval(regclass)
    描述:递增序列并返回新值。

说明:

为了避免从同一个序列获取值的并发事务被阻塞,nextval操作不会回滚;也就是说,一旦一个值已经被抓取,那么就认为它已经被用过了,并且不会再被返回。即使该操作处于事务中,当事务之后中断,或者如果调用查询结束不使用该值,也是如此。这种情况将在指定值的顺序中留下未使用的“空洞”。因此,openGauss序列对象不能用于获得“无间隙”序列。


须知:

nextval函数只能在主机上执行,备机不支持执行此函数。

  • 返回类型:numeric
    nextval函数有两种调用方式(其中第二种调用方式目前不支持Sequence命名中有特殊字符".“的情况),如下:
    示例1:
openGauss=# select nextval('seqDemo'); 
nextval
---------
2
(1 row)

示例2:

openGauss=# select seqDemo.nextval; 
nextval
---------
2
(1 row)
  • currval(regclass)
    返回当前会话里最近一次nextval返回的指定的sequence的数值。如果当前会话还没有调用过指定的sequence的nextval,那么调用currval将会报错。
    返回类型:numeric
    currval函数有两种调用方式(其中第二种调用方式目前不支持Sequence命名中有特殊字符”.“的情况),如下:
    示例1:
openGauss=# select currval('seq1'); 
currval
---------
2
(1 row)

示例2:

openGauss=# select seq1.currval; 
currval
---------
2
(1 row)
  • lastval()
    描述:返回当前会话里最近一次nextval返回的数值。这个函数等效于currval,只是它不用序列名为参数,它抓取当前会话里面最近一次nextval使用的序列。如果当前会话还没有调用过nextval,那么调用lastval将会报错。
    返回类型:numeric
    示例:
openGauss=# select lastval(); 
lastval
---------
2
(1 row)
  • setval(regclass,numeric)
    描述:设置序列的当前数值。
    返回类型:numeric
    示例:
openGauss=# select setval('seqDemo',1);
setval
--------
1
(1 row)
  • setval(regclass, numeric, Boolean)
    描述:设置序列的当前数值以及is_called标志。
    返回类型:numeric
    示例:
openGauss=# select setval('seqDemo',1,true);
setval
--------
1
(1 row)

说明:

Setval后当前会话会立刻生效,但如果其他会话有缓存的序列值,只能等到缓存值用尽才能感知Setval的作用。所以为了避免序列值冲突,setval要谨慎使用。 因为序列是非事务的,setval造成的改变不会由于事务的回滚而撤销。


须知:

nextval函数只能在主机上执行,备机不支持执行此函数。

  • pg_sequence_last_value(sequence_oid oid, OUT cache_value int16, OUT last_value int16)
    描述:获取指定sequence的参数,包含缓存值,当前值。
    返回类型:int16,int16
  • last_insert_id()
    描述:获取最近一次为自动增长列成功插入的第一个自动生成的值。
    返回类型:int16
  • last_insert_id(int16)
    描述:设置下一次last_insert_id()函数的返回值,并返回此值。若参数为NULL,将下一次last_insert_id()函数的返回值设为0,此函数返回NULL。
    返回值类型:int16
    示例:
openGauss=# select last_insert_id(100);
last_insert_id
----------------
100
(1 row)
openGauss=# select last_insert_id();
last_insert_id
----------------
100
(1 row)

 说明:

  • last_insert_id()和last_insert_id(int16)是会话级别的函数,若当前会话未对自动增长列插入任何数据,last_insert_id()返回值为0。
  • last_insert_id()和last_insert_id(int16)仅在参数sql_compatibility=B时可用。


#openGauss  #openGauss  #openGauss 

标签:insert,last,函数,nextval,SEQUENCE,序列,openGauss,id
From: https://blog.51cto.com/u_13824494/5845216

相关文章

  • 优维低代码:Storyboard Functions 微应用函数
    优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维......
  • PHP sprintf函数 bug
    sprintf()定义和用法format参数可能的格式值:%%-返回一个百分号%%b-二进制数%c-ASCII值对应的字符%d-包含正负号的十进制数(负数、0、正数)%e-使用小写的......
  • JavaScript常用工具函数
    检测数据是不是除了symbol外的原始数据functionisStatic(value){return(typeofvalue==='string'||typeofvalue==='number'||typeofvalue......
  • openGauss 文本检索调试函数
    ts_debug([configregconfig,]documenttext,OUTaliastext,OUTdescriptiontext,OUTtokentext,OUTdictionariesregdictionary[],OUTdictionaryregdictiona......
  • openGauss 3.1.0版本正式发布 | 七个方面全面增强
    今日,openGauss3.1.0版本正式上线!openGauss3.1.0 版本是openGauss2022年发布的Preview版本,版本维护生命周期为0.5年。此次发布包含两个数据库服务端安装包:企业版和轻量版......
  • MySQL空间函数ST_Distance_Sphere()的使用
    参考:https://blog.csdn.net/qq_19674263/article/details/104405987#:~:text=MySQL空间函数ST_Distance_Sphere(g1%2Cg2,radius]):返回球体上两个点和%2F或多点之间的......
  • vue_01_函数式组件
    函数式组件-全局弹窗组件函数式组件定义1.在template上写上functional2.在exportdefault{}中设置functional为true//方式一<templatefunctional><temp......
  • Scala控制结构和函数、过程、懒值、异常
    1 ifelse表达式scala中没有三目运算符,因为根本不需要。scala中ifelse表达式是有返回值的,如果if或者else返回的类型不一样,就返回Any类型(所有类型的公共超类型)。例如:ifel......
  • C语言 函数05 函数的声明
    函数声明1、告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,函数声明决定不了。2、函数的声明一般出现在函数的使用之前。要满足先声明后使用。3......
  • Scala高阶函数
    1 作为参数的函数函数作为一个变量传入到了另一个函数中,那么该作为参数的函数的类型是:function1,即:(参数类型)=>返回类型defplus(x:Int)=3+xvalresult1=Array(1,......