熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle中Sequence的使用

2013-11-13 15:58:40  來源: Oracle 

  Oracle提供了sequence對象由系統提供自增長的序列號通常用於生成數據庫數據記錄的自增長主鍵或序號的地方

  下面介紹一下關於sequence 的生成修改刪除等常用的操作:

   創建 Sequence

  使用如下命令新建sequence(用戶需要有CREATE SEQUENCE 或者CREATE ANY SEQUENCE權限):

  CREATE  SEQUENCE test_sequence  INCREMENT  BY        每次加的個數據   START  WITH         從開始計數   NOMAXVALUE        不設置最大值   NOCYCLE          一直累加不循環   CACHE  ;    [注意] 如果設置了CACHE值ORACLE將在內存裡預先放置一些sequence以使存取速度更快cache裡面的取完後oracle自動再取一組到cache 但是使用cache可能會跳號 當遇到數據庫突然異常down掉(shutdown abort)cache中的sequence就會丟失 因此推薦在create sequence的時候使用 nocache 選項

   使用 sequence:

  sequenceCURRVAL    返回 sequence的當前值 sequenceNEXTVAL    增加sequence的值然後返回 sequence 值

  [注意] 第一次NEXTVAL返回的是初始值 隨後的NEXTVAL會自動增加你定義的INCREMENT BY值然後返回增加後的值

  CURRVAL 總是返回當前SEQUENCE的值但是在第一次NEXTVAL初始化之後才能使用CURRVAL否則會出錯 一次NEXTVAL會增加一次 SEQUENCE的值所以如果你在同一個語句裡面使用多個NEXTVAL其值就是不一樣的

  sequence 存儲在數據字典中存儲於user_sequences表   LAST_NUMBER 為最終序列號也就是sequence游標當前所在的位置

  //get sequence last_number

  SELECT LAST_NUMBER FROM USER_SEQUENCES WHERE SEQUENCE_NAME=TEST_SEQNAME

  // NEXTVAL 使游標指向下一位(增一或減一)

  SELECT SEQNAMENEXTVAL FROM USER_SEQUENCES 得到下一位游標的值

   修改 Sequence

  用戶必須擁有ALTER ANY SEQUENCE 權限才能修改sequence 可以alter除start至以外的所有sequence參數 如果想要改變start值必須 drop sequence 再 recreate

  命令格式如下

  ALTER  SEQUENCE test_sequence  INCREMENT  BY      MAXVALUE     CYCLE         到後從頭開始   NOCACHE ;

    刪除 Sequence  DROP  SEQUENCE order_seq;


From:http://tw.wingwit.com/Article/program/Oracle/201311/17614.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.