• 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

  • 相关阅读:
    Java面试题200+大全(合适各级Java人员)
    qt 画多边形,可以拖拽
    Kubernetes那点事儿——集群搭建1.22(kubeadm部署)
    Linux驱动开发 数据的传输和辅助信息的作用
    8分钟,复习一遍红黑树
    超级强大的菜鸟工具库
    Redis集群
    The AWS Well-Architected Framework Module 1 - Overview
    学校常见的网络舆情风险点及防控措施有哪些?
    【构建ML驱动的应用程序】第 1 章 :从产品目标到 ML 框架
  • 原文地址:https://blog.csdn.net/futianxia061112/article/details/125440651