Truy vấn giá trị AUTO_INCREMENT tiếp theo từ INFORMATION_SCHEMA
Thay vì SHOW TABLE STATUS, có thể truy vấn trực tiếp INFORMATION_SCHEMA.TABLES cột AUTO_INCREMENT.
Cú pháp
SELECT `AUTO_INCREMENT` AS 'NextAutoIncrementValue' FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = 'yourDatabase' AND `TABLE_NAME` = 'yourTable';
Ví dụ thực tế
Tạo bảng và chèn 5 hàng:
mysql> CREATE TABLE viewtheauto_incrementValueForATableDemo (
-> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName VARCHAR(20)
-> );
mysql> INSERT INTO viewtheauto_incrementValueForATableDemo(StudentName) VALUES
('Ramit'), ('Bob'), ('Chris'), ('Robert'), ('John');
Dữ liệu: Id 1-5
Truy vấn AUTO_INCREMENT tiếp theo:
mysql> SELECT `AUTO_INCREMENT` AS 'NextAutoIncrementValue' FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = 'test' AND `TABLE_NAME` = 'viewtheauto_incrementValueForATableDemo';
Kết quả:
+------------------------+ | NextAutoIncrementValue | +------------------------+ | 6 | +------------------------+
So sánh các phương pháp
| Phương pháp | Cú pháp | Ưu điểm |
|---|---|---|
| INFORMATION_SCHEMA | SELECT AUTO_INCREMENT FROM ... | Chuẩn SQL, dùng trong query, lọc được nhiều bảng |
| SHOW TABLE STATUS | SHOW TABLE STATUS LIKE 'table' | Nhanh, nhiều info khác (rows, size...) |
| SHOW CREATE TABLE | SHOW CREATE TABLE table | Xem cả DDL, AUTO_INCREMENT trong comment |
| LAST_INSERT_ID() | SELECT LAST_INSERT_ID() | ID vừa INSERT (session) |
Lưu ý
- Cần quyền SELECT trên INFORMATION_SCHEMA
- Giá trị AUTO_INCREMENT là giá trị sẽ dùng cho INSERT tiếp theo
- Sau DELETE, AUTO_INCREMENT không giảm (trừ TRUNCATE)
ALTER TABLE t AUTO_INCREMENT = 100đặt lại giá trị tiếp theo