zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

oracle数据库ID自增长--序列

Oracle数据库序列 -- ID 增长
2023-09-27 14:22:26 时间

什么是序列?在mysql中有一个主键自动增长的id,例如:uid number primary key auto_increment;在oracle中序列就是类似于主键自动增长,两者功能是一样的,只是叫法不同而已。

在oracle中想要实现id自动增长只能用序列来实现。在oracle中,是将序列装入内存,可以提高访问效率。

1.)序列的创建

  create sequence 序列名称

  increment by n 每次增长多少 //系统默认值为1. 

  start with  n从几开始 //系统默认值为1.

  [maxvalue  n最大值|nomaxvalue]  //NoMaxValue:是系统对序列设置的默认值. 即指定升序序列的最大值为10的27次方.降序序列的最大值为-1.

  [minvalue n最小值|nominvalue] //同上

  [cycle |nocycle 是否循环]

  [cache  n缓存的数量|nocache]  //指定要保留在内存中整数的个数.默认缓存的格式为20个. 可以缓存的整数最少为2个. 可以缓存的整数个数最多为:Cell(maximum_num—minimum_num)/ABS(increment_num). 注:Cell(序列的最大上限值—最小下限值,)/ABS(每次自增的增量).

例如:create sequence person_pid_seq

           increment by 1

           start with 1

           maxvalue 1000

           nocycle

           nocache;

  可以直接创建,其他的选项全部是默认值。例如:create sequence person_pid_seq;

2.)序列的操作

序列创建完成之后,所有的自动增长就都是由我们自己操作了,那么如果操作呢?提供了两种方式。

  2.1 nextval:取得序列的下一个值

  2.2 currval:取得当前序列的内容

注意:currval 需要再nextval调用之后才能使用

 

3.)序列的使用

    insert into person values(person_pid_seq.nextval,'name,'adress');//一般是利用nextval,让id保持一直递增。

4.)序列的删除

    drop sequence person_pid_seq;

5.)序列的注意事项

       由于序列是同auto_increment一样的,所有它是不会回头的,即使你删掉了数据,它的id永远不会回到以前,只会一直递增,例如,你有十条数据,你删了第十条,希望下一条的id从10开始,这是不可能的,除非你重新做。 

详情参考:https://blog.csdn.net/yongqingmiao/article/details/6753421