Trường TĂNG TỰ ĐỘNG SQL
Trường TĂNG TỰ ĐỘNG
Tự động tăng cho phép một số duy nhất được tạo tự động khi một bản ghi mới được chèn vào bảng.
Thông thường đây là trường khóa chính mà chúng tôi muốn được tạo tự động mỗi khi chèn bản ghi mới.
Cú pháp cho MySQL
Câu lệnh SQL sau đây xác định cột "Personid" là trường khóa chính tăng tự động trong bảng "Người":
CREATE TABLE Persons
(
Personid int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (Personid)
);
MySQL sử dụng từ khóa AUTO_INCREMENT
để thực hiện tính năng tăng tự động.
Theo mặc định, giá trị bắt đầu cho AUTO_INCREMENT
là 1 và giá trị này sẽ tăng thêm 1 cho mỗi bản ghi mới.
Để cho phép chuỗi AUTO_INCREMENT
bắt đầu bằng một giá trị khác, hãy sử dụng câu lệnh SQL sau:
ALTER TABLE Persons AUTO_INCREMENT=100;
Để chèn một bản ghi mới vào bảng "Người", chúng ta sẽ KHÔNG phải chỉ định giá trị cho cột "Người" (một giá trị duy nhất sẽ được tự động thêm vào):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
Câu lệnh SQL ở trên sẽ chèn một bản ghi mới vào bảng "Người". Cột "Người" sẽ được gán một giá trị duy nhất. Cột "FirstName" sẽ được đặt thành "Lars" và cột "LastName" sẽ được đặt thành "Monsen".
Cú pháp cho SQL Server
Câu lệnh SQL sau đây xác định cột "Personid" là trường khóa chính tăng tự động trong bảng "Người":
CREATE TABLE Persons
(
Personid int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
Máy chủ MS SQL sử dụng từ khóa IDENTITY
để thực hiện tính năng tăng tự động.
Trong ví dụ trên, giá trị bắt đầu cho IDENTITY
là 1 và giá trị này sẽ tăng thêm 1 cho mỗi bản ghi mới.
Mẹo: Để chỉ định rằng cột "Personid" phải bắt đầu ở giá trị 10 và tăng dần thêm 5, hãy đổi nó thành IDENTITY(10,5)
.
Để chèn một bản ghi mới vào bảng "Người", chúng ta sẽ KHÔNG phải chỉ định giá trị cho cột "Người" (một giá trị duy nhất sẽ được tự động thêm vào):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
Câu lệnh SQL ở trên sẽ chèn một bản ghi mới vào bảng "Người". Cột "Người" sẽ được gán một giá trị duy nhất. Cột "FirstName" sẽ được đặt thành "Lars" và cột "LastName" sẽ được đặt thành "Monsen".
Cú pháp truy cập
Câu lệnh SQL sau đây xác định cột "Personid" là trường khóa chính tăng tự động trong bảng "Người":
CREATE TABLE Persons
(
Personid AUTOINCREMENT PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
MS Access sử dụng từ khóa AUTOINCREMENT
để thực hiện tính năng tăng tự động.
Theo mặc định, giá trị bắt đầu cho AUTOINCREMENT
là 1 và giá trị này sẽ tăng thêm 1 cho mỗi bản ghi mới.
Mẹo: Để chỉ định rằng cột "Personid" phải bắt đầu ở giá trị 10 và tăng dần thêm 5, hãy thay đổi mức tự động tăng thành AUTOINCREMENT(10,5)
.
Để chèn một bản ghi mới vào bảng "Người", chúng ta sẽ KHÔNG phải chỉ định giá trị cho cột "Người" (một giá trị duy nhất sẽ được tự động thêm vào):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
Câu lệnh SQL ở trên sẽ chèn một bản ghi mới vào bảng "Người". Cột "Người" sẽ được gán một giá trị duy nhất. Cột "FirstName" sẽ được đặt thành "Lars" và cột "LastName" sẽ được đặt thành "Monsen".
Cú pháp cho Oracle
Trong Oracle, mã phức tạp hơn một chút.
Bạn sẽ phải tạo trường tăng tự động với đối tượng chuỗi (đối tượng này tạo ra một chuỗi số).
Sử dụng cú pháp CREATE SEQUENCE
sau:
CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10;
Đoạn mã trên tạo một đối tượng chuỗi có tên là seq_person, bắt đầu bằng 1 và sẽ tăng dần thêm 1. Nó cũng sẽ lưu vào bộ nhớ đệm tối đa 10 giá trị về hiệu suất. Tùy chọn bộ đệm chỉ định số lượng giá trị chuỗi sẽ được lưu trữ trong bộ nhớ để truy cập nhanh hơn.
Để chèn một bản ghi mới vào bảng "Persons", chúng ta sẽ phải sử dụng hàm nextval (hàm này lấy giá trị tiếp theo từ chuỗi seq_person):
INSERT INTO Persons (Personid,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 "Người". Cột "Người" sẽ được gán số tiếp theo từ chuỗi seq_person. Cột "FirstName" sẽ được đặt thành "Lars" và cột "LastName" sẽ được đặt thành "Monsen".