• GBase 8c V3.0.0数据类型——序列函数


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

    1. nextval(regclass)

    描述:递增序列并返回新值。

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

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

    返回类型:numeric

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

    调用方式1。例如:

    ​gbase=# select nextval('seqDemo');

    调用方式2。例如:

    ​gbase=# select seqDemo.nextval;

    1. currval(regclass)

    返回当前会话里最近一次nextval返回的指定的sequence的数值。如果当前会话还没有调用过指定的sequence的nextval,那么调用currval将会报错。

    返回类型:numeric

    currval函数有两种调用方式(其中第二种调用方式目前不支持Sequence命名中有特殊字符”.“的情况),如下:

    调用方式1。例如:

     gbase=# select currval('seq1');

    调用方式2。例如:

     gbase=# select seq1.currval;

    1. lastval()

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

    返回类型:numeric

    示例:

     gbase=# select lastval();

    1. setval(regclass,numeric)

    描述:设置序列的当前数值。

    返回类型:numeric

    示例:

     gbase=# select setval('seqDemo',1);

    1. setval(regclass, numeric, Boolean)

    描述:设置序列的当前数值以及is_called标志。

    返回类型:numeric

    示例:

     gbase=# select setval('seqDemo',1,true);

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

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

    1. pg_sequence_last_value(sequence_oid oid, OUT cache_value int16, OUT last_value int16)

    描述:获取指定sequence的参数,包含缓存值,当前值。

    返回类型:int16,int16

  • 相关阅读:
    Day05
    怎么让英文大语言模型支持中文?--构建中文tokenization--继续预训练--指令微调
    beego开发博客系统学习(二)
    京东云开发者|IoT运维 - 如何部署一套高可用K8S集群
    深入JS 中三类循环原理和性能
    云计算学习7——云计算OpenStack运维基础
    springboot+java+vue基于微信小程序的高校餐厅食品留样管理系统#毕业设计
    嵌入式UBoot如何跳转Kernel—uboot与linux交界分析
    多线程8锁案例演示
    基于Java毕业设计疫情期间物资分派管理系统源码+系统+mysql+lw文档+部署软件
  • 原文地址:https://blog.csdn.net/futianxia061112/article/details/125440651