程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle sequence序列的正確用法

Oracle sequence序列的正確用法

編輯:Oracle數據庫基礎

我們大家都知道Oracle數據庫中沒有關於自增類型的相關字段,所以我們在通常情況下是需要定義一個關於Oracle sequence的來作為其自動增長的類型字段的相關數據。於是記錄了一些關於Oracle sequence的資料,已備查用!

Oracle中的序列(sequence)

1: 如何定義一個序列

僅向前的數字變量(和SQL中的自動編號有點像 identity(1,2) )

格式:

create sequence <序列名稱>

start with <起始數>

increment by <增長量>

[maxvalue 值]

[minvalue 值]

[cycle 當到達最大值的時候,將繼續從頭開始]

[Nocycle -- 一直累加,不循環]

[Cache ]

注意:

第一次NEXTVAL返回的是初始值;隨後的NEXTVAL會自動增加你定義的INCREMENT BY值,然後返回增加後的值。CURRVAL 總是返回當前Oracle SEQUENCE的值,但是在第一次NEXTVAL初始化之後才能使用CURRVAL,否則會出錯。一次NEXTVAL會增加一次SEQUENCE的值。

如果指定CACHE值,Oracle就可以預先在內存裡面放置一些sequence,這樣存取的快些。cache裡面的取完後,Oracle自動再取一組到cache。 使用cache或許會跳號, 比如數據庫突然不正常down掉(shutdown abort),cache中的Oracle sequence就會丟失. 所以可以在create sequence的時候用nocache防止這種情況。

  1. example:  
  2. create sequence mySeq  
  3. start with 1  
  4. increment by 2  
  5. maxvalue 40  
  6. minvalue 1  
  7. cycle  

2:怎麼去取序列數據:

  1. currval--->curenvalue  
  2. nextVal-->NextVlaue  
  3. example:  
  4. select mySeq.nextVal from dual  

注意一點:currval只有當nextVal執行一次以後才可以用.

在創建表的時候,可以使用序列.

具體例子:

create table 公司基本信息表

  1. (  
  2. ComPID int,  
  3. CompName varchar2(20)  
  4. )  

insert into 公司基本信息表 values(mySeq.nextVal,'AA')

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved