许多台客户端机器,通过前台程序,以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是出错的。