2 bước thực hiện
Bước 1: Đảm bảo cột là PRIMARY KEY + AUTO_INCREMENT + INDEX
ALTER TABLE bang MODIFY cot INT NOT NULL AUTO_INCREMENT PRIMARY KEY, ADD INDEX(cot);
Bước 2: Set giá trị khởi tạo
ALTER TABLE bang AUTO_INCREMENT = gia_tri_bat_dau;
Ví dụ: Bắt đầu từ 1000
Tạo bảng
mysql> CREATE TABLE setAutoIncrementDemo (
UserId INT,
UserName VARCHAR(20)
);
Bước 1
mysql> ALTER TABLE setAutoIncrementDemo
-> MODIFY UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> ADD INDEX(UserId);
Bước 2
mysql> ALTER TABLE setAutoIncrementDemo AUTO_INCREMENT = 1000;
Chèn dữ liệu test
mysql> INSERT INTO setAutoIncrementDemo(UserName) VALUES('John'),('Carol'),('Sam');
Kết quả
+--------+----------+ | UserId | UserName | +--------+----------+ | 1000 | John | | 1001 | Carol | | 1002 | Sam | +--------+----------+
Lưu ý quan trọng
- Giá trị AUTO_INCREMENT phải > MAX hiện tại của cột (nếu có data)
- Không thể set AUTO_INCREMENT < giá trị max hiện tại
- MyISAM: Cho phép set thấp hơn (nhưng insert sẽ skip)
- InnoDB: Báo lỗi nếu set ≤ MAX(id)
- Xem giá trị hiện tại:
SHOW TABLE STATUS LIKE 'bang';(cột Auto_increment)
Reset AUTO_INCREMENT (xóa data + reset về 1)
TRUNCATE TABLE bang; -- Tự reset AUTO_INCREMENT về 1
Ứng dụng: Phân sharding (mỗi shard dùng range ID riêng), merge data từ nhiều nguồn, test dữ liệu.