Oracle如何使用序列?
Oracle序列(sequence)是一种数据库项,能够生成一个整数序列。通常用于填充数字类型的主键列。
Oracle序列使用教程:
1、创建序列:
CREATE SEQUENCE sequence_name
[START WITH start_num]
[INCREMENT BY increment_num]
[{MAXVALUE maximum_num|NOMAXVALUE}]
[{MINVALUE minimum_num|NOMINVALUE}]
[{CYCLE|NOCYCLE}]
[{CACHE cache_num|NOCACHE}]
[{ORDER|NOORDER}]
说明:
start_num:序列开始整数
increment_num:每次增加的整数增量
maximum:序列最大整数
minimum:序列最小整数
CYCLE:循环生成
NOCYCLE:不循环生成,默认值
cache_num:保存在内存中的整数的个数
NOCACHE:不缓存任何整数
举例:
CREATE SEQUENCE seq_test;(默认值)
CREATE SEQUENCE seq_test START WITH 1 INCREMENT BY 2;
2、使用序列:
SELECT seq_test.nextval FROM dual;
insert into order_status2 (id) values (seq_test.nextval);
3、修改序列:
ALTER SEQUENCE语句来修改序列。可以修改的内容:
不能修改序列的初值
序列的最小值不能大于当前值
序列的最大值不能小于当前值
例如:ALTER SEQUENCE seq_test INCREMENT BY 3;
4、删除序列:
DROP SEQUENCE seq_test;
oracle怎么查询当前序列的值?
需要注意的是:
数据库连接成功后,初次执行这句话,会报异常,不能用。
如果不是你的语句单词拼写错误,就是因为没有先执行下边这句sql(select 序列名.nextval from dual;)。
也就是先去获取序列的当前值加上增量后的值。(不知道这是啥情况,没有去研究)
查询序列的值
当刚创建好序列后,不能直接查询当前序列的值,必须先用 nextval 查询下一个序列的值,之后才可以使用currval查询当前序列的值。
查询序列
第一次使用nextval 查询到的值就是 (start with n) .
之后就可以任意使用 currval 了。
当再次查询序列,它的 last_number 变为了序列的下一个值。