在Oracle中,序列(Sequence)常被用于实现自增主键。
创建一个序列
CREATE SEQUENCE sequence_name
MINVALUE
value
MAXVALUE
value
START WITH value
INCREMENT
BY value
CACHE
value;
MAXVALUE的默认值为 999999999999999999999999999。CACHE可以是具体的数值指定特定个数的数列被缓存内存待使用,提高效率,但是宕机后这些序列值将不可用,新的序列将会是缓存的最大值+increment的值。指定NOCACHE将不适用缓存。
引用序列值
sequence_name
.nextval
序列的删除
DROP SEQUENCE sequence_name
;
序列的修改
ALTER SEQUENCE sequence_name
action;
action支持创建序列时指定的选项,比如INCREMENT BY 10会修改序列每次加10。
序列值作为主键的值插入数据库
CREATE SEQUENCE myseq
MINVALUE
1
MAXVALUE
999999999999999999999999999
START WITH 1
INCREMENT
BY 1
CACHE
20;
create table nothing
(id
integer, name varchar2
(256)));
insert into nothing
values(myseq
.nextval
, 'nothing');
sqlldr中的序列生成方法
sqlldr中具有方法
sequence
(OPTION, INCREMENT
)
函数可以为导入的数据自动填充序列值。 OPTION可能的值为:
具体的数值,表示以此数值未开始max 表示使用已有数据的当前最大值为开始值count 表示使用已有的数据量为开始值 INCREMENT为具体数值表示序列增幅。