数据仓库服务 GAUSSDB(DWS)-SEQUENCE函数:nextval(regclass)

时间:2023-11-10 17:34:11

nextval(regclass)

递增序列并返回新值。

  • 为了避免从同一个序列获取值的并发事务被阻塞, nextval操作不会回滚;也就是说,一旦一个值已经被抓取, 那么就认为它已经被用过了,并且不会再被返回。 即使该操作处于事务中,当事务之后中断,或者如果调用查询结束不使用该值,也是如此。这种情况将在指定值的顺序中留下未使用的"空洞"。 因此,GaussDB(DWS)序列对象不能用于获得"无间隙"序列。
  • 如果nextval被下推到DN上时,各个DN会自动连接GTM,请求next values值,例如(insert into t1 select xxx,t1某一列需要调用nextval函数),由于GTM上有最大连接数为8192的限制,而这类下推语句会导致消耗过多的GTM连接数,因此对于这类语句的并发数目限制为7000(其它语句需要占用部分连接)/集群DN数目。

返回类型:bigint

nextval函数有两种调用方式(其中第二种调用方式兼容Oracle的语法,目前不支持Sequence命名中有特殊字符"."的情况),如下:

示例1:

1
2
3
4
5
SELECT nextval('seqDemo'); 
 nextval
---------
       2
(1 row)

示例2:

1
2
3
4
5
SELECT seqDemo.nextval; 
 nextval
---------
       2
(1 row)
support.huaweicloud.com/sqlreference-dws/dws_06_0043.html