Heim >Datenbank >MySQL-Tutorial >oracle 学习笔记(十二) oracle独有对象 序列sequence

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

WBOY
WBOYOriginal
2016-06-07 15:30:441048Durchsuche

在多用户修改表时,可能面临这样的问题: 当前有字段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 是递增不重复的.



    

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn