Oracle之序列(主鍵自增)

oracle中完成自動增長的功能,則只能依靠序列完成,所有的自動增長操作,需要用戶收工完成處理。 序列的創(chuàng)建格式: CREATE SEQUENCE sequence [INCREMENT BY n][STARTWITH n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE|NOCYCLE}] [

在Oracle中完成自動增長的功能,則只能依靠序列完成,所有的自動增長操作,需要用戶收工完成處理。
序列的創(chuàng)建格式:
CREATE SEQUENCE sequence?
[INCREMENT BY n][STARTWITH n]?
[{MAXVALUE n | NOMAXVALUE}]?
[{MINVALUE n | NOMINVALUE}]?
[{CYCLE|NOCYCLE}]?
[{CACHE n|NOCACHE}] ;?
范例:創(chuàng)建一個myseq的序列,驗證自動增長的操作。
CREATE SEQUENCE myseq ;?
序列創(chuàng)建完成之后,所有的自動增長應該由用戶自己處理,所以在序列中提供了一下的兩種操作:
nextVal : 學的序列的下一個內容
currVal : 去的序列的當前內容
范例:建立一張以驗證序列的操作
CREATE TABLE testseq(?
next NUMBER ,?
curr NUMBER?
) ;?
現在向表中添加數據,添加數據的時候需要手工使用序列
范例:使用序列
INSERT INTO testseq(next,curr) VALUES (myseq.nextval,myseq.currval) ;?
該操作執(zhí)行5次。
查詢testseq表:
SELECT * FROM testseq ;?
可以發(fā)現,newVal的內容是種在進行自動增長的操作,而currVal使用取出當前操作的序列結果。
也就是說,現在這種序列,每次增長的幅度是1,也可以修改序列的增長幅度。
每次的增長幅度 INCREMENT BY 長度
范例:
刪除序列:
DROP SEQUENCE myseq ;?
重新創(chuàng)建序列:
CREATE SEQUENCE myseq INCREMENT BY 2;?
再創(chuàng)建表,進行test:
DROP TABLE testseq ;?
CREATE TABLE testseq(?
next NUMBER ,?
curr NUMBER?
) ;?
插入5個數據,測試:
INSERT INTO testseq(next,curr) VALUES (myseq.nextval,myseq.currval) ;?
默認情況下,序列從1開始,那么也可以使用 START WITH 指定其開始位置。
DROP SEQUENCE myseq ;?
CREATE SEQUENCE myseq INCREMENT BY 2 STARTWITH 10 ;–從10開始?
創(chuàng)建一個序列,讓其取固定值在1、3、5、7、9,循環(huán)序列。
DROP SEQUENCE myseq ;?
CREATE SEQUENCE myseq MAXVALUE 10 INCREMENT BY 2 START WITH 1?
CACHE 2 CYCLE; ?

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享