首批通过分布式安全可靠测评,为关键业务系统打造
引用序列
更新时间:2024-12-10 23:00:00
创建序列后,可以引用序列。
使用序列时,必须在 CURRVAL 和 NEXTVAL 前带上序列的名称,并用句点(.)引用。
例如,序列的名称为 SEQ_FOO,则可以通过 SEQ_FOO.CURRVAL 获取 SEQ_FOO 序列的当前值。同样,可以通过 SEQ_FOO.NEXTVAL 获取 SEQ_FOO 序列的下一个自增值。
序列的 CURRVAL 和 NEXTVAL 的值可以用于以下位置:
顶层
SELECT语句的选择列表中。INSERT语句中的VALUE子句中。UPDATE语句中的SET子句中。
例如:
obclient> SELECT SEQUENCE_NAME.NEXTVAL FROM DUAL; /*每执行一次 Sequence 号就会增加*/
obclient> SELECT SEQUENCE_NAME.CURRVAL FROM DUAL; /*执行多少次 Sequence 号都不会变化*/
第一次引用 NEXTVAL 将返回序列的初始值,后续对 NEXTVAL 的引用将按照上一次序列的返回值加上序列定义的步长后返回一个新值。任何时候对 CURRVAL 的引用,都将返回当前序列的值,即最后一次对 NEXTVAL 引用时返回的值。
在会话中引用序列的 CURRVAL 伪列前,都应首先应用序列的 NEXTVAL 伪列来初始化本次会话的序列值。
创建序列时,可以定义其初始值以及其值之间的增量。对 NEXTVAL 的第一次引用将返回序列的初始值。对 NEXTVAL 的后续引用将会使序列值按照定义的增量递增,并返回新值。任何对 CURRVAL 的引用总是返回该序列的当前值,即最后一次对 NEXTVAL 引用时返回的值。
相关文档
更多序列相关的操作,参见以下文档: