Thay đổi giá trị bắt đầu của AUTO_INCREMENT
Dùng ALTER TABLE ... AUTO_INCREMENT = gia_tri để đặt điểm bắt đầu cho khóa chính tự tăng.
Cú pháp
ALTER TABLE tenBang AUTO_INCREMENT = soNguyenDuong;
Ví dụ minh họa
Tạo bảng có AUTO_INCREMENT:
CREATE TABLE AutoIncrementSpecificPoint (
BookId INT AUTO_INCREMENT NOT NULL,
PRIMARY KEY (BookId)
);
Chèn 4 dòng (mặc định bắt đầu từ 1):
INSERT INTO AutoIncrementSpecificPoint VALUES (), (), (), ();
+--------+
| BookId |
+--------+
| 1 |
| 2 |
| 3 |
| 4 |
+--------+
Đặt AUTO_INCREMENT = 100:
ALTER TABLE AutoIncrementSpecificPoint AUTO_INCREMENT = 100;
Chèn thêm 3 dòng:
INSERT INTO AutoIncrementSpecificPoint VALUES (), (), ();
Kết quả
+--------+
| BookId |
+--------+
| 1 |
| 2 |
| 3 |
| 4 |
| 100 |
| 101 |
| 102 |
+--------+
Lưu ý quan trọng
- Giá trị mới phải lớn hơn MAX(id) hiện tại, nếu không MySQL sẽ bỏ qua (giữ giá trị lớn nhất + 1).
- Không thể đặt AUTO_INCREMENT nhỏ hơn giá trị hiện có.
- Dùng
SHOW TABLE STATUS LIKE 'tenBang'để xem giá trị AUTO_INCREMENT tiếp theo. - Trong InnoDB, giá trị AUTO_INCREMENT lưu trong memory, mất khi restart (từ 8.0 đã persistent).
Ứng dụng
- Gộp dữ liệu từ nhiều server (set offset khác nhau).
- Đồng bộ ID với hệ thống ngoài.
- Tránh trùng ID khi merge database.