日期:2014-05-17  浏览次数:20943 次

请问不同的客户端用同样的用户名访问数据库取序列号,取得的当前的序列号是自己的吗?
许多台客户端机器,通过前台程序,以ORACLE的相同的用户名/密码访问数据库,都在做select   sequenceA.nextval,再select   sequenceA.curval,请问各客户端取得的当前序列号是刚才自己的nexval还是数据库中最后一个客户端插入的值呢?

------解决方案--------------------
nextval是某个序列的下一个值,它是一个永远增大(EVERINCREASING NUMBER)的数字
它的值不是某个客户端插入的,当你取nextval的时候,它会加1,
和表一样,sequence也是一个数据库对象
------解决方案--------------------
这个值只会月来月大,按照你的说的,是12,我是不太主张用这个自增的序列的,因为一个表用了序列,会严重影响表的INSERT的速度,不太明白为什么很多开发的都喜欢用这个自增的ID
我喜欢用表的自然主键,页容易理解

SQL> create sequence aaa;

Sequence created.

SQL> select aaa.nextval from dual;

NEXTVAL
----------
1

SQL> /

NEXTVAL
----------
2

SQL> /

NEXTVAL
----------
3

SQL>

------解决方案--------------------
currval是本会话最后一次nextval的值,如果会话没有执行过nextval,currval是出错的。