ORACLESEQUENCE的簡(jiǎn)單介紹(自增長(zhǎng)字段)_第1頁(yè)
ORACLESEQUENCE的簡(jiǎn)單介紹(自增長(zhǎng)字段)_第2頁(yè)
ORACLESEQUENCE的簡(jiǎn)單介紹(自增長(zhǎng)字段)_第3頁(yè)
ORACLESEQUENCE的簡(jiǎn)單介紹(自增長(zhǎng)字段)_第4頁(yè)
ORACLESEQUENCE的簡(jiǎn)單介紹(自增長(zhǎng)字段)_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、在oracle中sequence就是所謂的序列號(hào),每次取的時(shí)候它會(huì)自動(dòng)增加,一般用在需要按序列號(hào)排序的地方。1、Create Sequence你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE權(quán)限,CREATE SEQUENCE emp_sequenceINCREMENT BY 1 - 每次加幾個(gè)START WITH 1 - 從1開始計(jì)數(shù)NOMAXVALUE - 不設(shè)置最大值NOCYCLE - 一直累加,不循環(huán)CACHE 10;一旦定義了emp_sequence,你就可以用CURRVAL,NEXTV ALCURRVAL=返回sequence的當(dāng)前值NEXTV A

2、L=增加sequence的值,然后返回sequence 值比如:emp_sequence.CURRVALemp_sequence.NEXTV AL可以使用sequence的地方:- 不包含子查詢、snapshot、VIEW的SELECT 語(yǔ)句- INSERT語(yǔ)句的子查詢中- NSERT語(yǔ)句的VALUES中- UPDATE 的SET中可以看如下例子:INSERT INTO emp VALUES(empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDA TE, 1200, NULL, 20;SELECT empseq.currval

3、FROM DUAL;但是要注意的是:- 第一次NEXTV AL返回的是初始值;隨后的NEXTV AL會(huì)自動(dòng)增加你定義的INCREMENT BY 值,然后返回增加后的值。CURRVAL 總是返回當(dāng)前SEQUENCE的值,但是在第一次NEXTV AL 初始化之后才能使用CURRVAL,否則會(huì)出錯(cuò)。一次NEXTV AL會(huì)增加一次SEQUENCE的值,所以如果你在同一個(gè)語(yǔ)句里面使用多個(gè)NEXTV AL,其值就是不一樣的。明白?- 如果指定CACHE值,ORACLE就可以預(yù)先在內(nèi)存里面放置一些sequence,這樣存取的快些。cache里面的取完后,oracle自動(dòng)再取一組到cache。使用cache或

4、許會(huì)跳號(hào),比如數(shù)據(jù)庫(kù)突然不正常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_sequenceINCREMENT BY 10

5、MAXVALUE 10000CYCLE - 到10000后從頭開始NOCACHE ;影響Sequence的初始化參數(shù):SEQUENCE_CACHE_ENTRIES =設(shè)置能同時(shí)被cache的sequence數(shù)目。可以很簡(jiǎn)單的Drop SequenceDROP SEQUENCE order_seq;好吧,就到這里。-自增長(zhǎng)及觸發(fā)器:如何在Oracle 中實(shí)現(xiàn)類似自動(dòng)增加ID 的功能?整理編輯:China ASP我們經(jīng)常在設(shè)計(jì)數(shù)據(jù)庫(kù)的時(shí)候用一個(gè)系統(tǒng)自動(dòng)分配的ID來作為我們的主鍵,但是在ORACLE 中沒有這樣的功能,我們可以通過采取以下的功能實(shí)現(xiàn)自動(dòng)增加ID的功能1.首先創(chuàng)建sequencecre

6、ate sequence seqmax increment by 12.使用方法select seqmax.nextval ID from dual就得到了一個(gè)ID如果把這個(gè)語(yǔ)句放在觸發(fā)器中,就可以實(shí)現(xiàn)和ms sql 的自動(dòng)增加ID相同的功能!-由macro 發(fā)布于: 2001-04-13 14:44作者:Macro Zeng# 建表#CREATE TABLE "SPORTS"."LINEUP"("ID" NUMBER NOT NULL, "TYPE" NUMBER(3 NOT NULL, "BODY&q

7、uot; VARCHAR2(100 NOT NULL, "HITS" NUMBER( 10 DEFAULT 0 NOT NULL, PRIMARY KEY("ID"TABLESPACE "TS_SPORTS"# 建序列#CREATE SEQUENCE "SPORTS"."SPORTS_LINEUP_ID_SEQ" INCREMENT BY 1 START WITH 1 MAXVALUE 1.0E28 MINV ALUE 1 NOCYCLECACHE 50 NOORDER# 建自動(dòng)更新的觸發(fā)器#C

8、REATE OR REPLACE TRIGGER "SPORTS"."SPORTS_LINEUP_ID_TRIGGER" BEFORE INSERTON "SPORTS"."LINEUP"FOR EACH ROWDECLAREnext_id NUMBER;BEGIN-Get the next id number from the sequenceSELECT sports_lineup_id_seq.NEXTV ALINTO next_idFROM dual;-Use the sequence number as the primary key-for the record being inserted.:new.id := next_id;END;# 建保護(hù)PRIMARY KEY 的觸發(fā)器#CREATE OR REPLACE TRIGGER "SPORTS"."LINEUP_ID_UPDATE_TRIGGER" BEFORE UPDATE OF "ID" ON "SPORTS"."LINEUP"FOR EACH

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論