返回首页

gbase数据、南大通用产品文档:GBase8c序列函数

更新日期:2024年09月11日

序列(SEQUEENCE)函数能够确保用户在序列对象获取后续的序列值时,保证多用户
安全。

nextval(regclass)
描述:递增序列并返回新值。
为了避免从同一个序列获取值的并发事务被阻塞,nextval 操作不会回滚;也就是说,
一旦一个值已经被抓取,那么就认为它已经被用过了,
并且不会再被返回。即使该操作处于
事务中,当事务之后中断,或者如果调用查询结束不使用该值,也是如此。这种情况将在指

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
314
定值的顺序中留下未使用的“空洞”
。因此,GBase 8c 序列对象不能用于获得“无间隙”序
列。
nextval 函数只能在主机上执行,备机不支持执行此函数。
返回类型:numeric
nextval 函数有两种调用方式(其中第二种调用方式目前不支持Sequence 命名中有特殊
字符”.“的情况)
,如下:
调用方式1。例如:

gbase=# select nextval('seqDemo');
调用方式2。例如:

gbase=# select seqDemo.nextval;

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

lastval()
描述:返回当前会话里最近一次nextval 返回的数值。这个函数等效于currval,只是它
不用序列名为参数,它抓取当前会话里面最近一次nextval 使用的序列。如果当前会话还没
有调用过nextval,那么调用lastval 将会报错。
返回类型:numeric
示例:

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
315
gbase=# select lastval();

setval(regclass,numeric)
描述:设置序列的当前数值。
返回类型:numeric
示例:
gbase=# select setval('seqDemo',1);

setval(regclass, numeric, Boolean)
描述:设置序列的当前数值以及is_called 标志。
返回类型:numeric
示例:
gbase=# select setval('seqDemo',1,true);
Setval 后当前会话会立刻生效,但如果其他会话有缓存的序列值,只能等到缓存值用尽
才能感知Setval 的作用。所以为了避免序列值冲突,setval 要谨慎使用。因为序列是非事
务的,setval 造成的改变不会由于事务的回滚而撤销。
nextval 函数只能在主机上执行,备机不支持执行此函数。

pg_sequence_last_value(sequence_oid oid, OUT cache_value int16, OUT last_value int16)
描述:获取指定sequence 的参数,包含缓存值,当前值。
返回类型:int16,int16

GBA-01BR-0057
错误码
错误标识
错误显示信息
GBA-01BR-0057

backup table error
错误出现原因
备份表失败
分析与建议
查看具体错误码或日志,进一步定位错误

功能描述
删除一个数据库角色所拥有的数据库对象。
注意事项
所有该角色在当前数据库里和共享对象(数据库、
表空间)
上的所有对象上的权限都将
被撤销。
DROP OWNED 常常被用来为移除一个或者多个角色做准备。
因为DROP OWNED 只影
响当前数据库中的对象,
通常需要在包含将被移除角色所拥有的对象的每一个数据库中都执
行这个命令。
使用CASCADE 选项可能导致这个命令递归去删除由其他用户所拥有的对象。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
1121
角色所拥有的数据库、表空间将不会被移除。
语法格式
DROP OWNED BY name [, ...] [ CASCADE | RESTRICT ];
参数说明

name
角色名。

CASCADE | RESTRICT
CASCADE:级联删除所有依赖于被删除对象的对象。
RESTRICT(缺省值):拒绝删除那些有任何依赖对象存在的对象。
相关命令
REASSIGN OWNED , DROP ROLE