Oracle 使用 SEQUENCE 概念來創建數值主鍵值,當我們將數據行添加到表格中時。在 MySQL 和 SQL Server 中,數值主鍵的生成與個別表格相關,但在 Oracle 中,SEQUENCE 構造是單獨創建的,並不與特定的表格相關。

語法

在 Oracle 中創建 SEQUENCE 的語法如下:

CREATE SEQUENCE SEQUENCE_NAME
[START WITH {Initial_Value}]
[INCREMENT BY {interval}];

{Initial_Value}是序列的起始值,而{interval}是連續序列號之間的間隔。 [START WITH] 和 [INCREMENT BY] 都是可選字段。如果未指定,系統會將 {Initial_Value} 和 {interval} 都設為1。

範例

舉例來說,假設我們有一個具有以下結構的表格:

Table USER_TABLE
 欄位名稱  資料種類 
 Userid  integer 
 Last_Name  varchar(50) 
 First_Name  varchar(50) 

並且我們想使用以下序列生成 userid:

CREATE SEQUENCE SEQ_USER START WITH 5 INCREMENT BY 5;

我們指定我們想要在 INSERT INTO 語句中使用序列和 NEXTVAL 函數的順序如下:

INSERT INTO USER_TABLE VALUES (SEQ_USER.NEXTVAL, 'Washington', 'George');

INSERT INTO USER_TABLE VALUES (SEQ_USER.NEXTVAL, 'Jefferson', 'Thomas');

現在,該表格會有以下兩筆資料:

Table USER_TABLE
 Userid  Last_Name  First_Name 
 5  Washington  George 
 10  Jefferson  Thomas 

值得注意的是,序列與表格是沒有直接關係的。換句話說,一個序列可以用於為多個表格產生主鍵值,即使它被應用於不同的表格,該序列仍然繼續。例如,假設我們有第二個表格,名為 NEW_USERS,其結構與 USER_TABLE 相同,我們在執行上述兩個 SQL 命令後發出以下SQL命令:

INSERT INTO NEW_USER VALUES (SEQ_USER.NEXTVAL, 'Adams', 'John');

NEW_USER 表格將擁有以下這一筆資料:

Table NEW_USER
 Userid  Last_Name  First_Name 
 15  Adams  John 

Userid 為15,因為這是10之後的下一個值。

下一頁:SQL 排名

本頁最近於 2023年12月26日更新



Copyright © 2024   1keydata.com   版權所有