最新的Web開發教程
 

SQL自動增量字段


自動遞增允許當一個新的記錄被插入到表中產生一個唯一的數字。


自動遞增一個Field

我們常常想每一個新的記錄被插入時被自動創建的主鍵字段的值。

我們願在一個表中創建一個自動遞增字段。


語法的MySQL

下面的SQL語句定義了"ID"列是在一個自動增加的主鍵字段"Persons"表:

CREATE TABLE Persons
(
ID int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (ID)
)

MySQL使用AUTO_INCREMENT關鍵字來執行自動遞增功能。

缺省情況下,AUTO_INCREMENT起點值是1,並且它將由1為每個新的記錄遞增。

要讓AUTO_INCREMENT序列以其他值開始,使用下面的SQL語句:

ALTER TABLE Persons AUTO_INCREMENT=100

要插入一個新的記錄到"Persons"表中,我們不必為指定值"ID"列(唯一值會自動添加):

INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen')

上面的SQL語句將插入一個新的記錄插入到"Persons"表。 在"ID"欄將被分配一個唯一的值。 在"FirstName"欄將被設置為"Lars""LastName"欄將被設置為"Monsen"


語法為SQL Server

下面的SQL語句定義了"ID"列是在一個自動增加的主鍵字段"Persons"表:

CREATE TABLE Persons
(
ID int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

在MS SQL Server使用IDENTITY關鍵字來執行自動遞增功能。

在上面的例子中,對於IDENTITY起點值是1,並且它將由1為每個新的記錄遞增。

提示:要指定"ID"列以20為值10,增量開始,將其更改為IDENTITY(10,5)。

要插入一個新的記錄到"Persons"表中,我們不必為指定值"ID"列(唯一值會自動添加):

INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen')

上面的SQL語句將插入一個新的記錄插入到"Persons"表。 在"ID"欄將被分配一個唯一的值。 在"FirstName"欄將被設置為"Lars""LastName"欄將被設置為"Monsen"


語法訪問

下面的SQL語句定義了"ID"列是在一個自動增加的主鍵字段"Persons"表:

CREATE TABLE Persons
(
ID Integer PRIMARY KEY AUTOINCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

在MS Access使用AUTOINCREMENT關鍵字來執行自動遞增功能。

缺省情況下,自動增量的開始值是1,並且它將由1為每個新的記錄遞增。

提示:要指定"ID"列以20為值10,增量入手,改變自動增量AUTOINCREMENT(10,5)。

要插入一個新的記錄到"Persons"表中,我們不必為指定值"ID"列(唯一值會自動添加):

INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen')

上面的SQL語句將插入一個新的記錄插入到"Persons"表。 在"P_Id"欄將被分配一個唯一的值。 在"FirstName"欄將被設置為"Lars""LastName"欄將被設置為"Monsen"


語法甲骨文

在Oracle中的代碼是更靠譜一點。

你將不得不創建一個自動遞增字段與序列對象(該對象生成數字序列)。

使用下面的CREATE SEQUENCE語法:

CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10

上面的代碼創建一個名為seq_person序列對象,即以1開始,並將由1遞增它還將緩存多達10個值表現。 緩存選項指定許多序列值將如何存儲在內存訪問速度更快。

要插入一個新的記錄到"Persons"表中,我們將不得不使用NEXTVAL功能(此功能檢索seq_person序列的下一個值):

INSERT INTO Persons (ID,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen')

上面的SQL語句將插入一個新的記錄插入到"Persons"表。 在"ID"列將被分配來自seq_person序列的下一個數字。 在"FirstName"欄將被設置為"Lars""LastName"欄將被設置為"Monsen"