oracle / sql在不触发的情况下创建序列

时间:2014-07-31 23:11:44

标签: sql oracle

我创建了一个起始值为2的序列。

create sequence seq_ben
start with 2
increment by 1
nocache
nocycle;

当我被要求显示我写的序列的下两个数字时

select seq_ben.nextval from dual   

并运行此代码两次以提供下两个值,然后我被要求显示下一个序列而不触发它移动下一个数字并使用其接下来的三个值将新行添加到上面的序列。这可能吗 ?如何在不触发它的情况下生成下一个序列?

1 个答案:

答案 0 :(得分:0)

如果您在当前会话中至少引用了一次NEXTVAL,则可以使用CURRVAL

但是,我相信如果你真的想知道序列中的下一个数字,那么你的设计就会出现根本性的错误。序列的设计使得NEXTVAL是原子操作,并且没有两个会话可以获得相同的数字。换句话说,或者是递增的唯一标识符。这是它给你的唯一保证。使用这种设计,要求序列的下一个可能的值几乎没有意义。

您可以尝试使用MAX(),这通常被用作穷人对序列的解决方案。