Heim  >  Artikel  >  Datenbank  >  Oracle sequence序列的用法

Oracle sequence序列的用法

WBOY
WBOYOriginal
2016-06-07 16:55:511148Durchsuche

Oracle中没有自增类型的字段的,所以通常情况下需要定义一个sequence来作为自动增长类型字段的数据。 于是记录了一些关于

  Oracle中没有自增类型的字段的,所以通常情况下需要定义一个sequence来作为自动增长类型字段的数据。

  于是记录了一些关于Oracle sequence的资料,已备查用!

  Oracle中的序列(sequence)

  1: 如何定义一个序列

  仅向前的数字变量(和SQL中的自动编号有点像 identity(1,2)   )

  格式:

  create sequence

  start with

  increment by

  [maxvalue   值]

  [minvalue   值]

  [cycle 当到达最大值的时候,将继续从头开始]

  [Nocycle   -- 一直累加,不循环]

  [Cache ]

  注意:

  第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次SEQUENCE的值。

  如果指定CACHE值,,Oracle就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,Oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。

  example:

  create sequence mySeq

  start with 1

  increment by 2

  maxvalue 40

  minvalue 1

  cycle

  2:怎么去取序列数据:

  currval--->curenvalue

  nextVal-->NextVlaue

  example:

  select mySeq.nextVal from dual

  注意一点:currval只有当nextVal执行一次以后才可以用.

  在创建表的时候,可以使用序列.

  具体例子:

  create table 公司基本信息表

  (

  ComPID int,

  CompName varchar2(20)

  )

  insert into 公司基本信息表 values(mySeq.nextVal,'AA')

linux

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn