SQL 自動遞增欄位
自動遞增欄位
自動遞增允許在將新記錄插入表時自動生成唯一編號。
通常,我們希望每次插入新記錄時自動建立的都是主鍵欄位。
MySQL 語法
以下 SQL 語句定義了 "Persons" 表中的 "Personid" 列為一個自動遞增主鍵欄位。
CREATE TABLE Persons (
Personid int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (Personid)
);
MySQL 使用 AUTO_INCREMENT
關鍵字來實現自動遞增功能。
預設情況下,AUTO_INCREMENT
的起始值為 1,並且每次新記錄插入時會遞增 1。
要讓 AUTO_INCREMENT
序列從另一個值開始,請使用以下 SQL 語句:
ALTER TABLE Persons AUTO_INCREMENT=100;
要向 "Persons" 表插入新記錄,我們**不需要**為 "Personid" 列指定值(會自動新增一個唯一值)。
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
上面的 SQL 語句將在 "Persons" 表中插入一條新記錄。"Personid" 列將被分配一個唯一值,"FirstName" 列將被設定為 "Lars","LastName" 列將被設定為 "Monsen"。
SQL Server 語法
以下 SQL 語句定義了 "Persons" 表中的 "Personid" 列為一個自動遞增主鍵欄位。
CREATE TABLE Persons (
Personid int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
MS SQL Server 使用 IDENTITY
關鍵字來實現自動遞增功能。
在上例中, IDENTITY
的起始值為 1,並且每次新記錄插入時會遞增 1。
提示:要指定 "Personid" 列從值 10 開始並以 5 遞增,請將其更改為 IDENTITY(10,5)
。
要向 "Persons" 表插入新記錄,我們**不需要**為 "Personid" 列指定值(會自動新增一個唯一值)。
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
上面的 SQL 語句將在 "Persons" 表中插入一條新記錄。"Personid" 列將被分配一個唯一值,"FirstName" 列將被設定為 "Lars","LastName" 列將被設定為 "Monsen"。
Access 語法
以下 SQL 語句定義了 "Persons" 表中的 "Personid" 列為一個自動遞增主鍵欄位。
CREATE TABLE Persons (
Personid AUTOINCREMENT PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
MS Access 使用 AUTOINCREMENT
關鍵字來實現自動遞增功能。
預設情況下,AUTOINCREMENT
的起始值為 1,並且每次新記錄插入時會遞增 1。
提示:要指定 "Personid" 列從值 10 開始並以 5 遞增,請將其自動遞增更改為 AUTOINCREMENT(10,5)
。
要向 "Persons" 表插入新記錄,我們**不需要**為 "Personid" 列指定值(會自動新增一個唯一值)。
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
上面的 SQL 語句將在 "Persons" 表中插入一條新記錄。"Personid" 列將被分配一個唯一值,"FirstName" 列將被設定為 "Lars","LastName" 列將被設定為 "Monsen"。
Oracle 語法
在 Oracle 中,程式碼會稍微複雜一些。
您必須使用 sequence 物件建立一個自動遞增欄位(此物件會生成一個數字序列)。
使用以下 CREATE SEQUENCE
語法:
CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10;
上面的程式碼建立了一個名為 seq_person 的序列物件,它從 1 開始並以 1 遞增。它還會快取多達 10 個值以提高效能。cache 選項指定了多少序列值將儲存在記憶體中以加快訪問速度。
要向 "Persons" 表插入新記錄,我們必須使用 nextval 函式(此函式從 seq_person 序列檢索下一個值)。
INSERT INTO Persons (Personid,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen');
上面的 SQL 語句將在 "Persons" 表中插入一條新記錄。"Personid" 列將被分配來自 seq_person 序列的下一個數字,"FirstName" 列將被設定為 "Lars","LastName" 列將被設定為 "Monsen"。