Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tương đương cột IDENTITY của SQL Server trong MySQL là AUTO_INCREMENT

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ểmSQL Server IDENTITYMySQL AUTO_INCREMENT
Cú phápIDENTITY(seed, increment)AUTO_INCREMENT (mặc định 1,1)
Đặt giá trị bắt đầuCREATE TABLE ... IDENTITY(100,1)ALTER TABLE ... AUTO_INCREMENT=100
Lấy giá trị vừa insertSCOPE_IDENTITY()LAST_INSERT_ID()
Yêu cầu PKKhông bắt buộcBắt buộc (PK hoặc UNIQUE NOT NULL)
Reset khi TRUNCATECó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).