自動遞增允許當一個新的記錄被插入到表中產生一個唯一的數字。
自動遞增一個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" 。