oracle创建表时创建序列号,oracle表中怎么建序列
在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方。
1、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;
原文:http://my.oschina.net/u/1866821/blog/299970
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的oracle创建表时创建序列号,oracle表中怎么建序列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 牡丹王的功效与作用、禁忌和食用方法
- 下一篇: 白内障手术后视网膜脱离怎么办?