Oracle資料庫之序列

2021-07-03 05:44:26 字數 1853 閱讀 1221

序列是乙個計數器,它並不會與特定的表關聯。我們可以通過建立oracle序列和觸發器實現表的主鍵自增。序列的用途一般用來填充主鍵和計數。

一、建立序列

語法結構:

create sequence [ schema. ] sequence_name

[ integer

| |

| |

| ...

]...

;

完整語法結構見:

說明:schema:模式,即使用者名稱

sequence_name:序列名稱

increment by:定義序列的步長,如果省略,則預設為1,如果出現負值,則代表oracle序列的值是按照此步長遞減的。

start with:定義序列的初始值,預設為1。

maxvalue:序列生成器能產生的最大值。nomaxvalue是預設選項,代表沒有最大值定義。

minvalue:序列生成器能產生的最小值。nominvalue是預設選項,代表沒有最小值定義。

cycle和nocycle:當序列生成器的值達到限制值後是否迴圈。cycle代表迴圈,nocycle代表不迴圈。如果迴圈,則當遞增序列達到最大值時,迴圈到最小值,最小值為1。對於遞減序列達到最小值時,迴圈到最大值。如果不迴圈,達到限制值後,繼續產生新值就會發生錯誤。

cache:定義存放序列的記憶體塊的大小,預設為20,相當於預載入。緩衝部分序列計數以便更快獲取序列值,可以改善序列的效能,但快取選項可能會造成資料丟失。nocache表示不緩衝。

示例:

create sequence customers_seq

start

with

1000

increment by

1 nocache

nocycle;

二、刪除序列

語法:

drop sequence [ schema. ] sequence_name ;
示例:

drop sequence customers_seq;
三、使用序列

序列有兩個屬性能夠獲取序列的值:

currval:返回序列的當前值。

示例:

insert

into customers(id) values (customers_seq.nextval);

select customers_seq.currval from dual;

四、修改序列

語法:

alter sequence [ schema. ] sequence_name

| |

| | ...

} ...

;

完整語法結構見:

注意,不能修改序列的初始值,否則會報ora-02283。如果需要修改初始值,先刪除序列再重新建立序列設定初始值。

示例:

alter sequence customers_seq 

maxvalue 1500;

alter sequence customers_seq 

cycle

cache 5;

五、序列檢視

select * from user_sequences;

select * from all_sequences;

select * from dba_sequences;

oracle資料庫 序列 sequence

乙個問題 在某張表中,存在乙個id列 整數 我們希望在新增記錄的時候,該列從1開始,自動的增長,怎麼處理?解決方式 oracle是利用 序列 sequence 來完成的。序列 sequence 介紹 oracle中,是通過使用序列 sequence 來處理自動增長列。1 可以為表中的列自動產生值。2...

oracle資料庫遷移至mysql 之 序列替換

在mysql中沒有序列,所以在遷移過程中oracle得序列需要用mysql的乙個表和乙個函式來替換序列 select ss seqs.nextval from dual 替換為乙個表和乙個函式 表如下 create table ss seqs idval int unsigned auto incr...

Oracle筆記之Oracle資料庫資料型別

1 char 定長,create table tablename filed1 char 32 最大2000個字元,存放時超過報錯,不足補空格。補 dump函式,檢視字段資訊。select filed1,dump filed1 from tablename 2 varchar2 變長,最大4000個...