回覆列表
  • 1 # 奮鬥吧號

    1. 建立 Sequence 使用如下命令新建sequence(使用者需要有CREATE SEQUENCE 或者CREATE ANY SEQUENCE許可權): CREATE SEQUENCE test_sequence INCREMENT BY 1 -- 每次加的個數據 START WITH 1 -- 從1開始計數 NOMAXVALUE -- 不設定最大值 NOCYCLE -- 一直累加,不迴圈 CACHE 10 ; [注意] 如果設定了CACHE值,ORACLE將在記憶體裡預先放置一些sequence,以使存取速度更快。cache裡面的取完後,oracle自動再取一組到cache。 但是,使用cache可能會跳號, 當遇到資料庫突然異常down掉(shutdown abort),cache中的sequence就會丟失. 因此,推薦在create sequence的時候使用 nocache 選項。

    2. 使用 sequence: sequence.CURRVAL -- 返回 sequence的當前值 sequence.NEXTVAL -- 增加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 SEQNAME.NEXTVAL FROM USER_SEQUENCES 得到下一位遊標的值

    3. 修改 Sequence 使用者必須擁有ALTER ANY SEQUENCE 許可權才能修改sequence. 可以alter除start至以外的所有sequence引數. 如果想要改變start值,必須 drop sequence 再 re-create. 命令格式如下: ALTER SEQUENCE test_sequence INCREMENT BY 10 MAXVALUE 10000 CYCLE -- 到10000後從頭開始 NOCACHE ;

  • 中秋節和大豐收的關聯?
  • 招收女飛行員開戰鬥機,女的與男的相比有何優勢?真能戰鬥嗎?