使用資料庫序列生成主鍵

2021-07-27 04:41:39 字數 1926 閱讀 5182

一,什麼是序列

序列(sequence)是序列號生成器,可以為表中的行自動生成序列號,產生一組等間隔的數值(型別為數字)。其主要

的用途是生成表的主鍵值,可以在插入語句中引用,也可以通過查詢檢查當前值,或使序列增至下乙個值。建立序列需

要create sequence系統許可權。序列的建立語法如下:

create sequence 序列名

[increment by n]

[start with n]

; 建立乙個名稱為:sequence_paramid 的序列:

create sequence sequence_paramid

increment by 1

minvalue 100001001

maxvalue 999999999

nocycle

nocache;

increment by 用於定義序列的步長,如果省略,則預設為1,如果出現負值,則代表序列的值是按照此步長遞減的。 start with 定義序列的初始值(即產生的第乙個值),預設為1。 maxvalue 定義序列生成器能產生的最大值。選項nomaxvalue是預設選項,代表沒有最大值定義,這時對於遞增序列,系統能夠產生的最大值是10的27次方;對於遞減序列,最大值是-1。 minvalue定義序列生成器能產生的最小值 ...

在oracle資料庫中,什麼是序列呢?它的用途是什麼?序列(sequence)其實是序列號生成器,可以為表中的行自動

生成序列號,產生一組等間隔的數值(型別為數字)。其主要的用途是生成表的主鍵值,可以在插入語句中引用,也可以通

過查詢檢查當前值,或使序列增至下乙個值。

二,使用序列生成主鍵

建立乙個序列以後,如何使用這個序列,生成主鍵呢?我們獲取序列的nextval就可以了,具體還要結合使用場景。

假如我們在insert語句中使用序列生成主鍵,只需要把sequence_paramid.nextval作為值,傳遞給主鍵欄位就可以了。

假如我們想獲取這個值,在程式中使用,我們可以通過下面的語句:select sequence_paramid.nextval from dual;

和自增長的方式相比,序列具有更好的靈活性,可以根據需要設定的主鍵的長度。而使用自增長的方式,缺乏靈活

性,總是從1開始,每次遞增1,我們沒法控制。

三,實戰演示

1,建立序列

create sequence sequence_paramid

increment by 1

minvalue 100001001

maxvalue 999999999

nocycle

nocache;

2,建立資料庫表

create table yy_product(

product_id varchar(18) not null,    -- 由於是主鍵,是唯一的,因此不用再加上unique關鍵字

product_name varchar(100) not null,

primary key(product_id)             -- 把product_id 設定為主鍵

);3,資料庫插入操作

insert into yy_product(

product_id,

product_name

)values(

sequence_paramid.nextval,

'秋冬女士打**加絨加厚'

);ok,乙個簡單的應用就是這樣的,趕緊試試吧。這裡補充說明一點,很多人會問,為什麼你寫sql語句都用大寫字母呢,

因為oracle和db2資料庫,在對sql進行編譯時,會把sql轉換成大寫,我們都使用大寫,資料庫就減少了乙個轉換的

過程,這樣可以提高sql的執行效率。雖然對效率的提公升不大,但相對而言,效率是有提公升的。書寫高效的sql,必須要

從細節著手。正所謂:不積跬步無以至千里。

資料庫主鍵生成策略

在建立資料庫的時候,需要為每張表指定乙個主鍵,所謂主鍵就是能夠唯一標識表中某一行的屬性或屬性組,乙個表只能有乙個主鍵,但可以有多個候選索引。因為主鍵可以唯一標識某一行記錄,所以可以確保執行資料更新 刪除的時候不會出現張冠李戴的錯誤。資料庫的主鍵生成有多種方式,每種方式都有其優點和缺點,應該根據不同的...

資料庫主鍵生成策略

在建立資料庫的時候,需要為每張表指定乙個主鍵,所謂主鍵就是能夠唯一標識表中某一行的屬性或屬性組,乙個表只能有乙個主鍵,但可以有多個候選索引。因為主鍵可以唯一標識某一行記錄,所以可以確保執行資料更新 刪除的時候不會出現張冠李戴的錯誤。資料庫的主鍵生成有多種方式,每種方式都有其優點和缺點,應該根據不同的...

資料庫主鍵生成方式

轉 1 assign ed主鍵由外部程式負責生成,無需hibernate參與。2 hilo 通過hi lo 演算法實現的主鍵生成機制,需要額外的資料庫表儲存主鍵生成歷史狀態。3 seqhilo 與hilo 類似,通過hi lo 演算法實現的主鍵生成機制,只是主鍵歷史狀態儲存在seque nce中,適...