sequence:创建、使用

一:简介:

  sequence是数据库系统自动生成一个唯一的数字序列,可以用来做表中的主键;sequence是数据库系统中一个特殊的表,受数据库系统控制。任何时候都可以从sequence表中取数据。

二:oracle下如何创建sequence:

  创建一个定义一个seq_test,最小值为1,最大值为999999,从2开始,增量的步长为1,缓存为20的循环排序Sequence。

 create sequence seq_test

 minvalue 1

 maxvalue 999999

 start with 2

 increment by 1

 cache 20

 cycle;

cycle代表循环,当序列值达到999999之后,就会自动转换到1。nocycle就是不循环。

order按数据库按次序进行取值,对应noorder

cache是用来缓存的,便于下次快速取值,对应-nocache,注意:如果cache中是1-20,你娶到5时,突然数据库down掉,那么你限次取值就是21了。

三:如何取值呢?

当sequenc建好之后,可以使用nextval 和currval,进行取值

nextval =先增加sequence的值,然后返回 sequence 值

currval =当前sequence的值

注意:第一次使用nextval时候,取得是初始值,随后在用nextval就是先增加,再返回。currval时必须是在第一次nextval初始化之后才能使用,否则会出错。

同一个sql语句对同一个sequence使用nextval的值是一样的,即一条sql语句对同一个sequence无论使用多少次,返回的之都是同一个值。

转载:

http://blog.sina.com.cn/s/blog_a3ffb91101011yjj.html

原文地址:https://www.cnblogs.com/sunice/p/15166733.html