一:简介:
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