Home > Database > Mysql Tutorial > body text

Oracle sequence序列的用法

WBOY
Release: 2016-06-07 16:55:51
Original
1153 people have browsed it

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

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template