Oracle建立Sequence序列

2021-10-16 17:09:31 字數 2078 閱讀 9842

一、oracle版本

oracle    11.2.0.1.0 - 64bit

tool        sqlplus

二、序列是啥

通過學習,了解到序列是oracle資料物件的一種,是以有序增加或者減少相同步長的一組序號,最主要的作用是用來生成資料表 的主鍵或者唯一鍵。序列不占用磁碟上的儲存空間,是存活在記憶體上的物件。

建立語法:

create sequence 序列名稱

increment by [num1]

start with [num2]

maxvalue [num3] | [nomaxvalue]

minvalue [num4] | [nominvalue]

nocycle | cycle

nocache | cache [num5]

[order];

三、關鍵字解釋:

1. increment by num1:步長為num1,num1可以是正數也可以是負數,但都必須是整數,預設為1,不可以是0(為0就失去了序列的意義)。

當num1為正數是序列值越來越大,為負數時越來越小。

2. start with [num2]:定義序列的初始值或起始值num2,這是序列的第乙個值,預設值是 1。

3. maxvalue [num3] | [nomaxvalue]:定義序列可以生成的最大值num3。不設定最大值,則預設為nomaxvalue, 遞增序列最大值據說是10的27次方;遞減序列的最大值是 -1。

4. minvalue [num4] | [nominvalue ]:定義序列可以生成的最小值num4。不設定最小值,則預設為nominvalue,遞增序列的最小值為1

5. nocycle | [cycle]:定義序列生成的值達到最大時是否迴圈,nocycle表示不迴圈,如果乙個序列需要很長時間才能用完,可以考慮使用迴圈序列。下乙個迴圈開始值,在user_sequences中的last_number欄位可以檢視。

6. nocache | [cache] [num5]:定義序列是否使用快取,及快取塊的大小,預設大小為20。連線斷開,快取清空(我猜的,哈哈)。

7. [order]:order選項,定義序列是否按順序發生,預設為no。在單例項資料庫中沒有區別,因為序列一定是按序發生的。在集群環境中,假如快取cache=20,例項1取了1-20,儲存到記憶體中;例項2再引用同一序列時,會取21-40...這樣在多例項中取到的序列值就會不同,order定義後集群的每個例項都要按照順序得到序列值。

四、建立示例:

create sequence s2

increment by 2 --步進 2

start with 1 --起始值 1

maxvalue 20 --最大值 20

minvalue -20 --最小值 -20

nocycle  --不迴圈

nocache; --不進行快取

五、1. 獲取當前序列的值:

select s2.currval from dual;

select s2.nextval from dual;

3. 查詢使用者下有哪些序列:

select * from user_sequences;

六、序列建立後可以進行修改:

1. alter sequence s2 increment by -2;  --修改為遞減序列

2. alter sequence s2 maxvalue 100;  --修改最大值為100

3. alter sequence s2 cache 30;  --修改為快取,快取塊大小為30,意為一次快取最多儲存30個序列值到記憶體中

七、知識點總結:

1. 序列是共享的呼叫,有引用許可權的使用者都可以引用它。

2. 當事務回滾時,事務中增刪改的資料可以回退,但序列不會回退!!!

3. 在乙個表中,序列遞增的字段值可能會中斷、不連續,原因是其它物件引用了這個序列,即使是dual虛擬表的引用。

4. nocache設定時,每次引用序列都需要計算,會消耗效能;cache時,只再快取時計算一次;如果想快速的生成序列值,請將cache值加大,實際應用場景,如訂單號。

5. 如果想用序列值作為主鍵,序列一定要定義為nocycle。

Oracle中如何建立使用SEQUENCES

oracle中sequences的使用 oracle提供了sequence物件,由系統提供自增長的序列號,通常用於生成資料庫資料記錄的自增長主鍵或序號的地方.下面介紹一下關於sequence 的生成,修改,刪除等常用的操作 1.建立 sequence 使用如下命令新建sequence 使用者需要有c...

Oracle建立自增長序列 SEQUENCE

oracle通過建立序列來實現自增張欄位。建立序列的語法 建立序列的語法 create sequence user sequence name increment by n start with n maxvalue n nomaxvalue minvalue n nominvalue 修改序列的語...

sql server建立序列sequence

1 建立乙個序列物件 1 create sequence schema name sequence name 2as built in integer type user defined integer type 3 start with 4increment by 5 6 7cycle 8 seq...