在SQL Server數據庫中可以自增字段但在Oracle數據庫中在建表的時候卻沒有這個選項在實際的應用中我們可以通過觸發器(trigger)或者序列(sequence)來實現
創建sequence的語法
create sequence Sequence_name
increment by 表示從開始計值
start with 每次增長
nomaxvalue / maxvalue 有兩個可選值
要麼無最大值要麼指定最大值
minvalue / nominvalue 同maxvalue
cycle 表示達到最大值後從頭開始也可以為nocycle
cache 指定cache的值如果指定CACHE值oracle就可以預先在內
存裡面放置一些sequence這樣存取的快些cache裡面的取完後oracle
自動再取一組到cache使用cache或許會跳號 比如數據庫突然不正常down
掉(shutdown abort)cache中的
sequence就會丟失 所以可以在create sequence的時候用nocache防止這種情況
order;指定排序
序列提供兩個方法
NextVal和CurrValNextVal是取序列的下一個值一次NEXTVAL會增加一次sequence的值CurrVal是取序列的當前值例如在插入記錄時
insert tablename(id) values(sequence_idnextval)
——sequence_id為序列名
大家需要注意的是第一次NEXTVAL返回的是初始值隨後的NEXTVAL會自動增加你定義的INCREMENT BY值然後返回增加後的值CURRVAL總是返回當前sequence的值但是在第一次NEXTVAL初始化之後才可以使用CURRVAL否則會出現出錯
注釋在使用powerdesign進行數據庫設計時powerdesigner對Oracle的支持有些差強人意你會發現powerdesign會自動為序列名加上在Oracle中雖然可以執行成功也可以看到序列存在但是如果你運行select sequence_namenextval from dual它就會提示序列(名)不存在!所以大家在鍵序列的時候需要特別的留意
From:http://tw.wingwit.com/Article/program/Oracle/201311/16985.html