在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方。
專注于為中小企業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)八步免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
1、createsequence
你首先要有createsequence或者createanysequence權(quán)限,
createsequenceemp_sequence
incrementby1--每次加幾個
startwith1--從1開始計數(shù)
nomaxvalue--不設(shè)置最大值
nocycle--一直累加,不循環(huán)
cache10;
一旦定義了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中
可以看如下例子:
insertintoempvalues
(empseq.nextval,'lewis','clerk',7902,sysdate,1200,null,20);
selectempseq.currvalfromdual;
但是要注意的是:
-第一次nextval返回的是初始值;隨后的nextval會自動增加你定義的incrementby值,然后返回增加后的值。currval總是返回當(dāng)前sequence的值,但是在第一次nextval初始化之后才能使用currval,否則會出錯。一次nextval會增加一次sequence的值,所以如果你在同一個語句里面使用多個nextval,其值就是不一樣的。明白?
-如果指定cache值,oracle就可以預(yù)先在內(nèi)存里面放置一些sequence,這樣存取的快些。cache里面的取完后,oracle自動再取一組到cache。使用cache或許會跳號,比如數(shù)據(jù)庫突然不正常down掉(shutdownabort),cache中的sequence就會丟失.所以可以在createsequence的時候用nocache防止這種情況。
2、altersequence
你或者是該sequence的owner,或者有alteranysequence權(quán)限才能改動sequence.可以alter除start至以外的所有sequence參數(shù).如果想要改變start值,必須dropsequence再re-create.
altersequence的例子
altersequenceemp_sequence
incrementby10
maxvalue10000
cycle--到10000后從頭開始
nocache;
影響sequence的初始化參數(shù):
sequence_cache_entries=設(shè)置能同時被cache的sequence數(shù)目。
可以很簡單的dropsequence
dropsequenceorder_seq;
創(chuàng)建序列
CREATE SEQUENCE SEQUENCE_NAME
START WITH 10
INCREMENT BY 10
MAXVALUE 2000
MINVALUE 10
NOCYCLE
CACHE 10
?通過序列的偽列來訪問序列的值
–SEQUENCE_NAME.NEXTVAL
返回序列的下一個值
–SEQUENCE_NAME.CURRVAL
返回序列的當(dāng)前值
CREATE SEQUENCE emp_sequence -- emp_sequence這個就是后面要用到這個序列號時引用的名稱
INCREMENT BY 1 -- 每次加幾個
START WITH 1 -- 從1開始計數(shù)
NOMAXVALUE -- 不設(shè)置最大值
NOCYCLE -- 一直累加,不循環(huán)
CACHE 100; -- 緩存值 100
當(dāng) 需要使用該序列號的值時,直接調(diào)用創(chuàng)建的序號號中的 nextval方法。
如: emp_sequence.nextval (注意:后面沒有括號,它是一個屬性值)
刪除序列
DROP SEQUENCE emp_sequence;
實現(xiàn)思路:將主鍵設(shè)置為序列,自后每次按照固定規(guī)則增加相應(yīng)的數(shù)字即可。
1、首先要有create sequence或者create any sequence權(quán)限,
create sequence emp_sequence
INCREMENT BY 1 -- 每次加幾個
START WITH 1 -- 從1開始計數(shù)
NOMAXVALUE -- 不設(shè)置最大值
NOCYCLE -- 一直累加,不循環(huán)
CACHE 10;
2、插入到表中,
INSERT INTO emp VALUES
(emp_sequence .nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20);
需要先創(chuàng)建序列,然后nextval添加數(shù)據(jù)使其自動生成序號。
1、創(chuàng)建表:
create?table?test
(id?int,
name?varchar2(20));
2、創(chuàng)建序列:
Create?sequence?seq_test_id
Increment?by?1
Start?with?1
Maxvalue?999999
Minvalue?1
Nocycle
nocache;
3、插入數(shù)據(jù):
insert?into?test?values?(seq_test_id.nextval,'badkano');
4、再插入一條數(shù)據(jù):
insert?into?test?values?(seq_test_id.nextval,'百度知道團長');
這樣可見,序號是添加成功的。
1、將某個字段設(shè)置為主鍵,字段類型要是number的;
2、創(chuàng)建一個sequence;
3、在往這個字段插入值時,使用創(chuàng)建的這個sequence,具體如 insert into table_name values(sequence_name.naxtval,XXX,XXX);
commit;
本文題目:oracle如何插入序列,oracle序列用法
網(wǎng)站網(wǎng)址:http://jinyejixie.com/article28/dsseecp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、響應(yīng)式網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、全網(wǎng)營銷推廣、外貿(mào)建站、微信公眾號
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)