在Oracle中,序列(Sequence)常被用于实现自增主键

在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为具体数值表示序列增幅。
发布了106 篇原创文章 · 获赞 15 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/skyupward/article/details/102847341