CURRVAL¶
说明¶
取当前序列的值。可以使用“序列.CURRVAL”实现该函数。
返回值¶
与bigint_expression相同的类型
注解
- 当创建一个新的序列时,必须使用SETVAL()或NEXTVAL()对当前序列进行初始化,然后才可以使用CURRVAL()取当前序列的值。
- CURRVAL函数是易变函数,如果和NEXTVAL函数同时出现,并出现其后,会随着NEXTVAL的值改变而改变。
示例¶
示例1: 使用 CURRVAL 取当前的值
-- 清理环境
DROP SEQUENCE seq1;
-- 创建序列
CREATE SEQUENCE seq1;
-- 使用 CURRVAL 取当前的值
-- 未初始化序列,查询报错
SELECT CURRVAL('seq1');
ERROR, 当前SESSION还没有得到序列的当前值, 请先调用nextval或者setval,序列名为SEQ1
-- 使用 NEXTVAL 初始化序列
SELECT NEXTVAL('seq1');
NEXTVAL(bigint) |
---------------------
1 |
总数目:1
-- 使用 CURRVAL 取当前的值
SELECT CURRVAL('seq1');
CURRVAL(bigint) |
---------------------
1 |
总数目:1
-- 删除序列
DROP SEQUENCE seq1;
示例2: CURRVAL 与 NEXTVAL 在同一语句中
-- 清理环境
DROP SEQUENCE seq2;
DROP SEQUENCE seq3;
-- 创建序列
CREATE SEQUENCE seq2;
-- CURRVAL 与 NEXTVAL 在同一语句中
-- CURRVAL 在 NEXTVAL 之前,查询报错
SELECT CURRVAL('seq2') AS CURRVAL, NEXTVAL('seq2') AS NEXTVAL;
ERROR, 当前SESSION还没有得到序列的当前值, 请先调用nextval或者setval,序列名为SEQ2
-- 删除序列
DROP SEQUENCE seq2;
-- 创建序列
CREATE SEQUENCE seq3;
-- CURRVAL 与 NEXTVAL 在同一语句中
-- CURRVAL 在 NEXTVAL 之后,查询成功
SELECT NEXTVAL('seq3') AS NEXTVAL, CURRVAL('seq3') AS CURRVAL;
NEXTVAL(bigint) |CURRVAL(bigint) |
------------------------------------------
1 |1 |
总数目:1
-- 删除序列
DROP SEQUENCE seq3;