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

时间:2024-12-24 10:32:35

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