CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  开发

在多用户并发增加序列值的情况下,通过select seq.currentvalue from dual得到的是当前用户的增加后的序列值吗

楼主horris(僧推月下门)2005-05-15 00:15:14 在 Oracle / 开发 提问

我有一个序列,假设名为SEQ。我把它的值通过一个插入记录的触发器作为一个表的主键的值。  
  我想在插入记录后,得到这个主键的值,通过以下语句:  
  select   seq.currentvalue   from   dual  
  问题是我的客户端比较多,可能客户端A插入一条记录时,主键值(即触发器的当前值)是n1,同时客户端B也插入一记录,主键是n2。那么A随后通过DUAL得到的触发器的当前值会不会是n2,而不是我希望的n1呢? 问题点数:100、回复次数:8Top

1 楼railgunman(堕落男人)回复于 2005-05-15 09:00:59 得分 30

这样处理:  
    一个客户端插入以后,马上就获取主键的值:  
  insert   into   tableA(F_A,F_B,F_C)  
  values(V_A,V_B,V_C)  
  returning   KeyField  
  into   :KeyField;Top

2 楼dacong(大聪)回复于 2005-05-15 12:26:39 得分 20

不用触发器,就在应用中写Top

3 楼horris(僧推月下门)回复于 2005-05-16 14:12:51 得分 0

to     railgunman(堕落男人)   :  
  我在客户端用ADO编程,请问你给的语句能用吗?  
  是否可以这样写:  
  select   seq.nextvalue   into   kid   from   dual  
  insert   into   xxx   (...)   values   (kid,...)Top

4 楼zsfww1205(努力学习oracle)回复于 2005-05-16 14:38:50 得分 20

直接用:  
  insert   into   xxx   (id,..)   values   (seq.nextvalue,...)就可以了Top

5 楼zsfww1205(努力学习oracle)回复于 2005-05-16 14:40:59 得分 0

哦,应该是:seq.nextvalTop

6 楼horris(僧推月下门)回复于 2005-05-16 15:28:36 得分 0

楼上的,我的客户端还想知道刚刚插入的那个记录的ID的值。Top

7 楼rolandzhang()回复于 2005-05-17 17:11:06 得分 30

sequence   取值是连续的,但是在多用户并发的时候,由于某个客户端失败或者其他原因,并且sequence.nextval一旦产生,不能重用,会导致主键ID不连续,如果想保持主键不跳号,通过前端编程实现:比如每次取出最大的主键值+1作为下一个主键值Top

8 楼horris(僧推月下门)回复于 2005-05-17 17:21:21 得分 0

算了,不问了,我用自已的解决方案吧。谢谢各位参与Top

相关问题

  • ORA-08002:序列SEQ_GID.CURRVAL尚未在此进程中定义
  • 请问一下0RA-08002序列seq尚未在此进程中定义是是什么意思啊?(急)
  • win2000server序列号
  • Windows2000序列號?
  • 序列号
  • 关于序列
  • 序列号
  • D5序列号
  • 序列号??????????????
  • 序列号

关键词

  • 用户
  • 客户
  • 序列
  • 值
  • seq
  • 插入
  • 触发器
  • 客户端
  • 键
  • dual

得分解答快速导航

  • 帖主:horris
  • railgunman
  • dacong
  • zsfww1205
  • rolandzhang

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo