溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何進(jìn)行oracle中的sequence分析

發(fā)布時(shí)間:2021-11-30 17:21:34 來源:億速云 閱讀:152 作者:柒染 欄目:數(shù)據(jù)庫

本篇文章給大家分享的是有關(guān)如何進(jìn)行oracle中的sequence分析,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

在oracle中sequence就是所謂的序列號,每次取的時(shí)候它會(huì)自動(dòng)增加,一般用在需要按序列號排序的地方。  

1、Create Sequence  

你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE權(quán)限,  

CREATE SEQUENCE emp_sequence  

     INCREMENT BY 1   -- 每次加幾個(gè)  

     START WITH 1     -- 從1開始計(jì)數(shù)  

     NOMAXVALUE       -- 不設(shè)置最大值  

     NOCYCLE          -- 一直累加,不循環(huán)  

     CACHE 10;  

一旦定義了emp_sequence,你就可以用CURRVAL,NEXTVAL  

CURRVAL=返回 sequence的當(dāng)前值  

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會(huì)自動(dòng)增加你定義的INCREMENT BY值,然后返回增加后的值。CURRVAL 總是返回當(dāng)前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否則會(huì)出錯(cuò)。一次NEXTVAL會(huì)增加一次SEQUENCE的值,所以如果你在同一個(gè)語句里面使用多個(gè)NEXTVAL,其值就是不一樣的。明白?  

- 如果指定CACHE值,ORACLE就可以預(yù)先在內(nèi)存里面放置一些sequence,這樣存取的快些。cache里面的取完后,oracle自動(dòng)再取一組到cache。 使用cache或許會(huì)跳號, 比如數(shù)據(jù)庫突然不正常down掉(shutdown abort),cache中的sequence就會(huì)丟失. 所以可以在create sequence的時(shí)候用nocache防止這種情況。  

2、Alter Sequence  

你或者是該sequence的owner,或者有ALTER ANY SEQUENCE 權(quán)限才能改動(dòng)sequence. 可以alter除start至以外的所有sequence參數(shù).如果想要改變start值,必須 drop   sequence 再 re-create .  

Alter sequence 的例子  

ALTER SEQUENCE emp_sequence  

     INCREMENT BY 10  

     MAXVALUE 10000  

     CYCLE     -- 到10000后從頭開始  

     NOCACHE ;  

影響Sequence的初始化參數(shù):  

SEQUENCE_CACHE_ENTRIES =設(shè)置能同時(shí)被cache的sequence數(shù)目。   

可以很簡單的Drop Sequence  

DROP SEQUENCE order_seq;

以上就是如何進(jìn)行oracle中的sequence分析,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI