本节介绍了PolarDB中用于操作序列对象的函数。
序列对象(也被称为序列产生器或者简称为序列)是一个特定的单行记录表,由CREATE SEQUENCE命令创建。一个序列对象通常为表的记录产生唯一标识。在下面列出的序列函数为从序列对象中获取连续的序列数提供了简单,多用户安全的方法。
语法
sequence.NEXTVAL
sequence.CURRVAL
参数
- sequence:在CREATE SEQUENCE命令中分配给序列的标识符。下面介绍了这些函数的使用方法。
- NEXTVAL:这个函数的作用是将序列对象的当前位置指到这个对象的下一个值。这个操作完成后是不能撤销的。即使多个会话同步执行NEXTVAL,每个会话将只能安全的取得一个唯一的序列值。
- CURRVAL:返回在当前会话中函数NEXTVAL在序列中最近取得的数值。(如果在会话中的序列从来没有调用NEXTVAL,那么报告一条错误)。需要注意的是因为这个函数返回所在会话的序列数值,它会给出关于从当前会话开始的时候,是否有其他的会话执行了NEXTVAL的可预见性答案。
如果已经使缺省参数创建了一个序列对象,那么在这个对象上调用NEXTVAL函数将返回从1开始的连续数值。通过在CREATE SEQUENCE命令中使用特定参数,可以获取序列的其他系统行为。
说明 为避免从同一序列获取数值的同步事务阻塞,函数NEXTVAL操作永不会回滚;这就是说,一旦获取了一个值,即使执行函数NEXTVAL的事务随后中断,也会认为已经使用了这个值。这就意味着中断的事务可能会在已经分配的值的序列留下未使用的值的“漏洞”。