Trường AUTO INCREMENT trong SQL
Auto-increment sẽ tạo ra một số duy nhất khi ghi nhận mới vào bảng.
Trường AUTO INCREMENT
Chúng ta thường mong muốn tự động tạo giá trị của trường primary key mỗi khi chèn bản ghi mới.
Chúng ta có thể tạo một trường auto-increment trong bảng.
Cú pháp sử dụng cho MySQL
Câu lệnh SQL sau đây định nghĩa cột "P_Id" trong bảng "Persons" là auto-increment primary key:
CREATE TABLE Persons ( P_Id int NOT NULL AUTO_INCREMENT, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), PRIMARY KEY (P_Id) )
MySQL sử dụng từ khóa AUTO_INCREMENT để thực hiện nhiệm vụ auto-increment.
Mặc định, giá trị bắt đầu của AUTO_INCREMENT là 1, mỗi bản ghi mới tăng lên 1.
Để làm cho chuỗi AUTO_INCREMENT bắt đầu từ giá trị khác, hãy sử dụng cú pháp SQL sau:
ALTER TABLE Persons AUTO_INCREMENT=100
Để chèn bản ghi mới vào bảng "Persons", chúng ta không cần thiết phải quy định giá trị cho cột "P_Id" (giá trị sẽ được thêm tự động một giá trị duy nhất):
INSERT INTO Persons (FirstName,LastName) VALUES ('Bill','Gates')
Câu lệnh SQL trên sẽ chèn một bản ghi mới vào bảng "Persons". "P_Id" sẽ được gán một giá trị duy nhất. "FirstName" sẽ được đặt là "Bill", cột "LastName" sẽ được đặt là "Gates".
Cú pháp sử dụng cho SQL Server
Câu lệnh SQL sau đây định nghĩa cột "P_Id" trong bảng "Persons" là auto-increment primary key:
CREATE TABLE Persons ( P_Id int PRIMARY KEY IDENTITY, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )
MS SQL sử dụng từ khóa IDENTITY để thực hiện nhiệm vụ auto-increment.
Mặc định, giá trị bắt đầu của IDENTITY là 1, mỗi bản ghi mới tăng lên 1.
Để quy định cột "P_Id" bắt đầu từ 20 và tăng lên 10, hãy thay đổi identity thành IDENTITY(20,10):
Để chèn bản ghi mới vào bảng "Persons", chúng ta không cần thiết phải quy định giá trị cho cột "P_Id" (giá trị sẽ được thêm tự động một giá trị duy nhất):
INSERT INTO Persons (FirstName,LastName) VALUES ('Bill','Gates')
Câu lệnh SQL trên sẽ chèn một bản ghi mới vào bảng "Persons". "P_Id" sẽ được gán một giá trị duy nhất. "FirstName" sẽ được đặt là "Bill", cột "LastName" sẽ được đặt là "Gates".
Cú pháp sử dụng cho Access
Câu lệnh SQL sau đây định nghĩa cột "P_Id" trong bảng "Persons" là auto-increment primary key:
CREATE TABLE Persons ( P_Id int PRIMARY KEY AUTOINCREMENT, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )
MS Access sử dụng từ khóa AUTOINCREMENT để thực hiện nhiệm vụ auto-increment.
Mặc định, giá trị bắt đầu của AUTOINCREMENT là 1, mỗi bản ghi mới tăng lên 1.
Để quy định cột "P_Id" bắt đầu từ 20 và tăng lên 10, hãy thay đổi autoincrement thành AUTOINCREMENT(20,10):
Để chèn bản ghi mới vào bảng "Persons", chúng ta không cần thiết phải quy định giá trị cho cột "P_Id" (giá trị sẽ được thêm tự động một giá trị duy nhất):
INSERT INTO Persons (FirstName,LastName) VALUES ('Bill','Gates')
Câu lệnh SQL trên sẽ chèn một bản ghi mới vào bảng "Persons". "P_Id" sẽ được gán một giá trị duy nhất. "FirstName" sẽ được đặt là "Bill", cột "LastName" sẽ được đặt là "Gates".
Cú pháp sử dụng cho Oracle
Trong Oracle, mã sẽ phức tạp hơn một chút.
Bạn phải sử dụng sequence để tạo trường tự động tăng (đối tượng này tạo ra chuỗi số).
Hãy sử dụng cú pháp CREATE SEQUENCE sau:
CREATE SEQUENCE seq_person MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 10
Mã trên tạo ra đối tượng chuỗi seq_person có tên, bắt đầu từ 1 và tăng lên 1. Đối tượng này lưu trữ 10 giá trị để cải thiện hiệu suất. Tùy chọn CACHE quy định số lượng giá trị chuỗi cần lưu trữ để cải thiện tốc độ truy cập.
Để chèn bản ghi mới vào bảng "Persons", chúng ta phải sử dụng hàm nextval (hàm này lấy số tiếp theo từ chuỗi seq_person):
INSERT INTO Persons (P_Id,FirstName,LastName) VALUES (seq_person.nextval,'Lars','Monsen')
Câu lệnh SQL trên sẽ chèn một bản ghi mới vào bảng "Persons". Giá trị của "P_Id" được gán từ số tiếp theo của chuỗi seq_person. "FirstName" sẽ được đặt là "Bill", cột "LastName" sẽ được đặt là "Gates".