create sequence
你首先要有
create sequence
或者create any sequence
許可權,create sequence emp_sequence
increment by 1 --
每次加幾個
start with 1 -- 從1
開始計數
nomaxvalue --
不設定最大值
nocycle --
一直累加,不迴圈
cache 10;
一旦定義了
emp_sequence
,你就可以用
currval
,nextval
currval=
返回sequence
的當前值
nextval=
增加sequence
的值,然後返回
sequence
值比如:
emp_sequence.currval
emp_sequence.nextval
可以使用
sequence
的地方:
- 不包含子查詢、
snapshot
、view
的select
語句- insert
語句的子查詢中
- nsert
語句的values
中- update
的set
中可以看如下例子:
insert into emp values
(empseq.nextval, 'lewis', 'clerk',7902, sysdate, 1200, null, 20);
select empseq.currval from dual;
但是要注意的是:
- 第一次
nextval
返回的是初始值;隨後的
nextval
會自動增加你定義的
increment by
值,然後返回增加後的值。
currval
總是返回當前
sequence
的值,但是在第一次
nextval
初始化之後才能使用
currval
,否則會出錯。一次
nextval
會增加一次
sequence
的值,所以如果你在同乙個語句裡面使用多個
nextval
,其值就是不一樣的。明白?
- 如果指定
cache
值,oracle
就可以預先在記憶體裡面放置一些
sequence
,這樣訪問的快些。
cache
裡面的取完後,
oracle
自動再取一組
到cache。使用
cache
或許會跳號,
比如資料庫突然不正常
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_sequence
increment by 10
maxvalue 10000
cycle --
到10000
後從頭開始
nocache ;
影響sequence
的初始化引數:
sequence_cache_entries =
設定能同時被
cache
的sequence
數目。可以很簡單的
drop sequence
drop sequence order_seq;
Oracle中自動獲取序列sequence用法
oracle中沒有自增型別的字段的,所以通常情況下需要定義乙個sequence來作為自動增長型別欄位的資料。於是記錄了一些關於oracle sequence的資料,已備查用 oracle中的序列 sequence 1 如何定義乙個序列 僅向前的數字變數 和sql中的自動編號有點像 identity ...
Oracle中如何建立使用SEQUENCES
oracle中sequences的使用 oracle提供了sequence物件,由系統提供自增長的序列號,通常用於生成資料庫資料記錄的自增長主鍵或序號的地方.下面介紹一下關於sequence 的生成,修改,刪除等常用的操作 1.建立 sequence 使用如下命令新建sequence 使用者需要有c...
Oracle中sequenc和觸發器
oracle中的sequence即序列號,在取的時候會隨著規定增長。比如1個由1開始,每次增長1的序列號。create trigger seq user1 start with 1 increment by 1 序列號,通常被我們用於作為自動增長的id號進行使用。對於乙個user1 id,usern...