日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Oracle 原理:序列

發(fā)布時(shí)間:2024/10/14 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle 原理:序列 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?序列是生成唯一的連續(xù)序號(hào)的對(duì)象。有點(diǎn)像SQLServer里面的種子標(biāo)識(shí),可以用來(lái)實(shí)現(xiàn)自增。

CREATE SEQUENCE S_NO --序列名 START WITH 1 --起始值 INCREMENT BY 1 --自增值 MAXVALUE 200 --最大值 MINVALUE 1 --最小值 NOCYCLE --超過(guò)最大值是否從頭算起 CACHE 10; --內(nèi)存中預(yù)先分配的序列號(hào)

創(chuàng)建序列需要權(quán)限 CREATE SEQUENCE;

CACHE 10 :指的是預(yù)先分配的序列號(hào)。比如當(dāng)用戶要取序列 1 時(shí),1~10就會(huì)一起生成好,這樣下次取序列2時(shí),就不用先進(jìn)行計(jì)算了,直接取序列2就行。

CREATE SEQUENCE S_NO2 --序列名 START WITH 1 --起始值 INCREMENT BY 1 ; --自增值select * from user_sequences

查看自身用戶創(chuàng)建的的序列信息可以用user_sequences ;? 查看所有用戶的序列信息可以用 dba_sequences

我們可以看見(jiàn),各個(gè)值的默認(rèn)值,當(dāng)沒(méi)有指明值的時(shí)候,MIN_VALUE默認(rèn)是1,MAX_VALUE是10^28,不進(jìn)行循環(huán),CACHE_SIZE為20;

使用SEQUENCE 時(shí), CURRVAL 獲取當(dāng)前序列;NEXTVAL 獲取下一個(gè)序列;首次使用SEQUENCE時(shí)要使用NEXTVAL對(duì)序列進(jìn)行初始化,否則會(huì)報(bào)錯(cuò)。

此時(shí)再查詢序列 s_no 信息:

發(fā)現(xiàn) LAST_NUMBER 變成了11,因?yàn)槟愕腃ACHE_SIZE設(shè)成了10

不斷獲取下一個(gè)序列,發(fā)現(xiàn)在此過(guò)程中,S_NO的LAST_NUMBER 一直是11.

當(dāng)獲取到11時(shí),LAST_NUMBER才變到21。

利用序列實(shí)現(xiàn)SQLServer里邊的種子字段的自增功能,只要insert into 的時(shí)候用 s_no.nextval 就行了;

例如,學(xué)號(hào)通常是由 入學(xué)年份和專業(yè)代碼還有班級(jí)座位號(hào)組成的,班級(jí)座位號(hào)的自動(dòng)生成就可以使用序列;

?

修改序列:除了START WITH 起始值不能修改,其他都可以被修改

ALTER SEQUENCE S_NO Maxvalue 1000 Cycle INCREMENT BY -6;

可以用CREATE OR REPLECE 重建,或者設(shè)置 INCREMENT BY 為 負(fù)值,執(zhí)行以下NEXTVAL也行。

?

? ?if 序列沒(méi)被初始化

? ? ?LAST_NUMBER =? Nextval

? ?else?

? ???LAST_NUMBER =? 下一個(gè)進(jìn)行內(nèi)存分配的序列號(hào)

?

刪除序列:

DROP SEQUENCE [序列名]

總結(jié)

以上是生活随笔為你收集整理的Oracle 原理:序列的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。