ORACLESEQUENCE的简单介绍(自增长字段)_第1页
ORACLESEQUENCE的简单介绍(自增长字段)_第2页
ORACLESEQUENCE的简单介绍(自增长字段)_第3页
ORACLESEQUENCE的简单介绍(自增长字段)_第4页
ORACLESEQUENCE的简单介绍(自增长字段)_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。1、Create Sequence你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限,CREATE SEQUENCE emp_sequenceINCREMENT BY 1 - 每次加几个START WITH 1 - 从1开始计数NOMAXVALUE - 不设置最大值NOCYCLE - 一直累加,不循环CACHE 10;一旦定义了emp_sequence,你就可以用CURRVAL,NEXTV ALCURRVAL=返回sequence的当前值NEXTV A

2、L=增加sequence的值,然后返回sequence 值比如:emp_sequence.CURRVALemp_sequence.NEXTV AL可以使用sequence的地方:- 不包含子查询、snapshot、VIEW的SELECT 语句- INSERT语句的子查询中- NSERT语句的VALUES中- UPDATE 的SET中可以看如下例子:INSERT INTO emp VALUES(empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDA TE, 1200, NULL, 20;SELECT empseq.currval

3、FROM DUAL;但是要注意的是:- 第一次NEXTV AL返回的是初始值;随后的NEXTV AL会自动增加你定义的INCREMENT BY 值,然后返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTV AL 初始化之后才能使用CURRVAL,否则会出错。一次NEXTV AL会增加一次SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTV AL,其值就是不一样的。明白?- 如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。使用cache或

4、许会跳号,比如数据库突然不正常down掉(shutdown abort,cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。2、Alter Sequence你或者是该sequence的owner,或者有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值,必须drop sequence 再re-create .Alter sequence 的例子ALTER SEQUENCE emp_sequenceINCREMENT BY 10

5、MAXVALUE 10000CYCLE - 到10000后从头开始NOCACHE ;影响Sequence的初始化参数:SEQUENCE_CACHE_ENTRIES =设置能同时被cache的sequence数目。可以很简单的Drop SequenceDROP SEQUENCE order_seq;好吧,就到这里。-自增长及触发器:如何在Oracle 中实现类似自动增加ID 的功能?整理编辑:China ASP我们经常在设计数据库的时候用一个系统自动分配的ID来作为我们的主键,但是在ORACLE 中没有这样的功能,我们可以通过采取以下的功能实现自动增加ID的功能1.首先创建sequencecre

6、ate sequence seqmax increment by 12.使用方法select seqmax.nextval ID from dual就得到了一个ID如果把这个语句放在触发器中,就可以实现和ms sql 的自动增加ID相同的功能!-由macro 发布于: 2001-04-13 14:44作者:Macro Zeng# 建表#CREATE TABLE "SPORTS"."LINEUP"("ID" NUMBER NOT NULL, "TYPE" NUMBER(3 NOT NULL, "BODY&q

7、uot; VARCHAR2(100 NOT NULL, "HITS" NUMBER( 10 DEFAULT 0 NOT NULL, PRIMARY KEY("ID"TABLESPACE "TS_SPORTS"# 建序列#CREATE SEQUENCE "SPORTS"."SPORTS_LINEUP_ID_SEQ" INCREMENT BY 1 START WITH 1 MAXVALUE 1.0E28 MINV ALUE 1 NOCYCLECACHE 50 NOORDER# 建自动更新的触发器#C

8、REATE OR REPLACE TRIGGER "SPORTS"."SPORTS_LINEUP_ID_TRIGGER" BEFORE INSERTON "SPORTS"."LINEUP"FOR EACH ROWDECLAREnext_id NUMBER;BEGIN-Get the next id number from the sequenceSELECT sports_lineup_id_seq.NEXTV ALINTO next_idFROM dual;-Use the sequence number as the primary key-for the record being inserted.:new.id := next_id;END;# 建保护PRIMARY KEY 的触发器#CREATE OR REPLACE TRIGGER "SPORTS"."LINEUP_ID_UPDATE_TRIGGER" BEFORE UPDATE OF "ID" ON "SPORTS"."LINEUP"FOR EACH

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论