oracle序列

    1. oracle序列建立語法
CREATE SEQUENCE sequence  //建立序列名稱
       [INCREMENT BY n]  //遞增的序列值是n 若是n是正數就遞增,若是是負數就遞減 默認是1
       [START WITH n]    //開始的值,遞增默認是minvalue 遞減是maxvalue
       [{MAXVALUE n | NOMAXVALUE}] //最大值
       [{MINVALUE n | NOMINVALUE}] //最小值
       [{CYCLE | NOCYCLE}] //循環/不循環
       [{CACHE n | NOCACHE}];//分配並存入到內存中
    2. oracle建立語法中的緩存做用
       (參考:http://zhidao.baidu.com/link?url=5rNZnGdRJ9JPUVng3LrXtQ2pIuwTmpeEM4WRh7ibFWnXSJEDSKx1igdCEy0grG75wxH3WC5XOSaMK-e5k1xmOK)
       當大量語句發生請求,申請序列時,爲了不序列在運用層實現序列而引發的性能瓶頸。Oracle序列容許將序列提早生成 cache x個先存入內存,在發生大量申請序列語句時,可直接到運行最快的內存中去獲得序列。但cache個數也不能設置太大,由於在數據庫重啓時,會清空內存信息,預存在內存中的序列會丟失,當數據庫再次啓動後,序列從上次內存中最大的序列號+1 開始存入cache x個。
    3. 序列的查詢(以自增序列爲例)
       建立自增序列:
create sequence s1 increment by 1 start with 1 maxvalue 999 cycle cache 10;
       <1> 普通查詢     
select s1.nextval 普通序列號 from dual;

       <2> 固定格式的查詢----位數補零          
select lpad(s1.nextval,3,'0') 補零序列號 from dual;

       <3> 當前時間與自增序列結合.         
select to_char(sysdate,'yyyyMMddHH24miss')||lpad(s1.nextval,3,'0') 時間與補零序列號 from dual;
    4. 序列的刪除        drop sequence 序列名稱;
相關文章
相關標籤/搜索