nextval 和 currval 是 Oracle 数据库中用于处理序列(sequence)的两个函数。
nextval: 当你调用 nextval 函数时,它会返回序列的下一个值,并为该序列递增 1。这意味着每次调用 nextval 时,都会生成一个新的、递增后的序列值。通常,nextval 用于为表中的新记录分配唯一的 ID。示例:
INSERT INTO employees (employee_id, name)
VALUES (emp_seq.nextval, 'John Doe');
currval: 当你调用 currval 函数时,它会返回序列的当前值,而不会递增序列。这意味着如果在调用 nextval 之前调用 currval,它将返回序列的上一个值。如果在给定会话中从未调用过 nextval,则调用 currval 会引发错误。示例:
-- 假设 emp_seq.nextval 已经被调用过一次,且生成了值 100
SELECT emp_seq.currval FROM dual; -- 结果为 100
总结:nextval 用于获取序列的下一个值并递增序列,而 currval 用于获取序列的当前值,不会递增序列。在使用这两个函数时,请确保正确地处理序列值以避免数据完整性问题。