Oracle基本操作笔试面试题之sequence操作

匿名网友 匿名网友 发布于: 2015-08-30 00:00:00
阅读 185 收藏 0 点赞 0 评论 0

Sequences创建

1)创建 sequence

先要有 create sequence或者 create any sequence权限,执行以下命令就行:

create sequence sequence_name

increment by name_values1 —每次加几个

start with name_values1   — 1开始计数

nomaxvalue     —不设置最大值

nocycle       —一直累加,不循环

cache 10;

一旦定义了 sequence_name,你就可以用 currvalnextval

currval=返回 sequence的当前值

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

比如:

sequence_name.currval

sequence_name.nextval

可以使用 sequence的地方:

不包含子查询、snapshotview select语句

– insert语句的子查询中

– nsert语句的 values

– update set

可以看如下实例:

insert into table_name values

(empseq.nextval, ‘row1’, ‘row2’,7902, sysdate, 1200, null, 20);

select empseq.currval from dual;

但是要注意的是:

第一次 nextval返回的是初始值;随后的 nextval会自动增加你定义的 increment by值,然后返

增加后的值。currval总是返回当前 sequence的值,但是在第一次 nextval初始化之后才能使用

currval,否则会出错。

一次 nextval会增加一次 sequence的值,所以如果你在同一个语句里面使用多个 nextval,其值就

是不一样的.

如果指定 cache值,oracle就可以预先在内存里面放置一些 sequence,这样存取的快些。cache

里面的取完后,

oracle自动再取一组到 cache。使用 cache或许会跳号,比如数据库突然不正常 down掉(shutdown

abort),cache中的 sequence就会丢失.

所以可以在 create sequence的时候用 nocache防止这种情况。

2alter sequence

你或者是该 sequence owner,或者有 alter any sequence权限才能改动 sequence.可以 alter

start至以外的所有 sequence参数.如果想要改变 start值,必须 drop sequence re-create .

alter sequence的实例

alter sequence sequence_name

increment by 10

maxvalue 10000

cycle   — 10000后从头开始

nocache;

影响 sequence的初始化参数:

sequence_cache_entries =设置能同时被 cache sequence数目。

2Sequences删除

drop sequence sequence_name;

评论列表
文章目录