AUTO_INCREMENT: Tương đương IDENTITY trong MySQL
SQL Server dùng IDENTITY(1,1), MySQL dùng AUTO_INCREMENT cho khóa chính tự tăng.
Cú pháp
CREATE TABLE tenBang (
id INT NOT NULL AUTO_INCREMENT,
cotKhac KIEU_DU_LIEU,
PRIMARY KEY (id)
);
⚠️ Bắt buộc PRIMARY KEY
MySQL yêu cầu cột AUTO_INCREMENT phải là khóa chính (hoặc unique key đầu tiên):
-- SAI: Thiếu PRIMARY KEY
CREATE TABLE Sai (Id INT NOT NULL AUTO_INCREMENT, Name VARCHAR(30));
-- ERROR 1075: Incorrect table definition; there can be only one auto column and it must be defined as a key
-- ĐÚNG: Có PRIMARY KEY
CREATE TABLE Dung (
ProductId INT NOT NULL AUTO_INCREMENT,
ProductName VARCHAR(30),
PRIMARY KEY (ProductId)
);
Ví dụ chạy
INSERT INTO Dung (ProductName) VALUES ('Product-1'), ('Product-2'), ('Product-34');
SELECT * FROM Dung;
+-----------+-------------+
| ProductId | ProductName |
+-----------+-------------+
| 1 | Product-1 |
| 2 | Product-2 |
| 3 | Product-34 |
+-----------+-------------+
So sánh IDENTITY vs AUTO_INCREMENT
| Đặc điểm | SQL Server IDENTITY | MySQL AUTO_INCREMENT |
|---|---|---|
| Cú pháp | IDENTITY(seed, increment) | AUTO_INCREMENT (mặc định 1,1) |
| Đặt giá trị bắt đầu | CREATE TABLE ... IDENTITY(100,1) | ALTER TABLE ... AUTO_INCREMENT=100 |
| Lấy giá trị vừa insert | SCOPE_IDENTITY() | LAST_INSERT_ID() |
| Yêu cầu PK | Không bắt buộc | Bắt buộc (PK hoặc UNIQUE NOT NULL) |
| Reset khi TRUNCATE | Có | Có |
Mẹo
- Dùng
LAST_INSERT_ID()ngay sau INSERT để lấy ID vừa sinh (an toàn cho multi-user). - MySQL 8.0: AUTO_INCREMENT persist qua restart (lưu trong redo log).