程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> oracle中設置自增主鍵

oracle中設置自增主鍵

編輯:Oracle數據庫基礎
Oracle 自增長主鍵

首先,你要有一張表!
CREATE TABLE example(
ID Number(4) NOT NULL PRIMARY KEY,
NAME VARCHAR(25),
PHONE VARCHAR(10),
ADDRESS VARCHAR(50));
如果對於以上的建表語句還有疑問的話,建議您不要繼續了!有那麼些時間您還不如去看看金庸讀讀瓊瑤!
然後,你需要一個自定義的sequence
CREATE SEQUENCE emp_sequence
INCREMENT BY 1 -- 每次加幾個
START WITH 1 -- 從1開始計數
NOMAXVALUE -- 不設置最大值
NOCYCLE -- 一直累加,不循環
NOCACHE -- 不建緩沖區
以上代碼完成了一個序列(sequence)的建立過程,名稱為emp_sequence,范圍是從1開始到無限大(無限大的程度是由你機器決定的),nocycle 是決定不循環,如果你設置了最大值那麼你可以用cycle 會使seq到最大之後循環.對於nocache順便說一下如果你給出了cache值那麼系統將自動讀取你的cache值大小個seq
,這樣在反復操作時會加快運行速度,但如果遭遇意外情況如當機了或Oracle死了,則下次取出的seq值將和上次的不連貫.(如果連不連貫無所謂建議用cache,因為時間就是金錢呀!跑題了!)
書接上文,你只有了表和序列還不夠,還需要一個觸發器來執行它!代碼如下:
CREATE TRIGGER "觸發器名稱" BEFORE
INSERT ON example FOR EACH ROW WHEN (new.id is null)
begin
select emp_sequence.nextval into: new.id from dual;
end;
打完收工!下面你就試試插入數據吧!
INSERT INTO example(Name,phone,address) Values(''Cao'',''56498543'',''Heibei'');

 

=============================================================
Oracle SEQUENCE的簡單介紹(自增長字段)- -


from:http://ub1010.51.Net/BBS/user_file/2002-04-10/1018438701.htm

在Oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方。
1、CreateSequence
你首先要有CREATESEQUENCE或者CREATEANYSEQUENCE權限,
CREATESEQUENCEemp_sequence
INCREMENTBY1--每次加幾個
STARTWITH1--從1開始計數
NOMAXVALUE--不設置最大值
NOCYCLE--一直累加,不循環
CACHE10;

一旦定義了emp_sequence,你就可以用CURRVAL,NEXTVAL
CURRVAL=返回sequence的當前值
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總是返回當前SEQUENCE的值,但是在第一次NEXTVAL初始化之後才能使用CURRVAL,否則會出錯。

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