当前位置: 代码迷 >> Oracle管理 >> 请教不同的客户端用同样的用户名访问数据库取序列号,取得的当前的序列号是自己的吗
  详细解决方案

请教不同的客户端用同样的用户名访问数据库取序列号,取得的当前的序列号是自己的吗

热度:103   发布时间:2016-04-24 06:00:11.0
请问不同的客户端用同样的用户名访问数据库取序列号,取得的当前的序列号是自己的吗?
许多台客户端机器,通过前台程序,以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是出错的。
  相关解决方案