首页 > 数据库 > mysql教程 > oracle 学习笔记(十二) oracle独有对象 序列sequence

oracle 学习笔记(十二) oracle独有对象 序列sequence

WBOY
发布: 2016-06-07 15:30:44
原创
1047 人浏览过

在多用户修改表时,可能面临这样的问题: 当前有字段id ,从1 到100 ; 如果用户a,b 同时想插入数据 , 使用max 得到表的最大100后, 都插入了id为101的数据. 这样表中就有两个id为101的数据了. 要想解决此问题, 必须将查询max 和插入数据放到同一语句中执行, 才能

在多用户修改表时,可能面临这样的问题:

   当前有字段id ,从1 到100 ; 如果用户a,b 同时想插入数据 , 使用max 得到表的最大值100后, 都插入了id为101的数据. 这样表中就有两个id为101的数据了. 

   要想解决此问题, 必须将查询max 和插入数据放到同一语句中执行, 才能在多线程时避免公用区出现的问题.


   oracle 中 可采用sequence 对象来解决这个问题 .

  create sequence seq; 

  

多次使用

  select  seq.nextval from dual ;

   可以发现结果是递增的.


  当多个用户同时使用时也不会产生重复的数据 .

 

 例如向article 表中插入数据:  

     insert   into article  values (seq.nextval,'a','b');

 insert   into article  values (seq.nextval,'a','b');

 insert   into article  values (seq.nextval,'a','b');

 insert   into article  values (seq.nextval,'a','b');

..............

 插入的 在id 字段上的seq.nextval 是递增不重复的.



    

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板