Có 2 cách chính để xem giá trị AUTO_INCREMENT tiếp theo sẽ được gán cho cột khóa chính.
Cách 1: SHOW TABLE STATUS (Khuyên dùng)
SHOW TABLE STATUS LIKE 'tên_bảng'\G
Cách 2: Truy vấn INFORMATION_SCHEMA
SELECT `AUTO_INCREMENT` FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = 'tên_database' AND `TABLE_NAME` = 'tên_bảng';
Ví dụ minh họa
Tạo bảng và chèn 7 bản ghi:
mysql> CREATE TABLE viewAutoIncrementDemo (
-> UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> UserName VARCHAR(20)
-> );
Query OK, 0 rows affected (0.59 sec)
mysql> INSERT INTO viewAutoIncrementDemo(UserName) VALUES
-> ('John'), ('Carol'), ('Bob'), ('Sam'), ('Mike'), ('David'), ('Larry');
Xem dữ liệu (UserId từ 1 đến 7):
mysql> SELECT * FROM viewAutoIncrementDemo;
+--------+----------+ | UserId | UserName | +--------+----------+ | 1 | John | | 2 | Carol | | 3 | Bob | | 4 | Sam | | 5 | Mike | | 6 | David | | 7 | Larry | +--------+----------+
Kết quả cách 1: SHOW TABLE STATUS
mysql> SHOW TABLE STATUS LIKE 'viewAutoIncrementDemo'\G
*************************** 1. row ***************************
Name: viewautoincrementdemo
Engine: InnoDB
Version: 10
Row_format: Dynamic
Rows: 7
Avg_row_length: 2340
Data_length: 16384
Max_data_length: 0
Index_length: 0
Data_free: 0
Auto_increment: 8 <-- Giá trị tiếp theo sẽ là 8
...
Kết quả cách 2: INFORMATION_SCHEMA
mysql> SELECT `AUTO_INCREMENT`
-> FROM `information_schema`.`TABLES`
-> WHERE `TABLE_SCHEMA` = 'sample'
-> AND `TABLE_NAME` = 'viewAutoIncrementDemo';
+----------------+ | AUTO_INCREMENT | +----------------+ | 8 | +----------------+
So sánh 2 cách
| Tiêu chí | SHOW TABLE STATUS | INFORMATION_SCHEMA |
|---|---|---|
| Định dạng đầu ra | Dạng dọc (\G) hoặc bảng | Bảng chuẩn SQL |
| Thông tin bổ sung | Nhiều (Engine, Rows, Size, Collation...) | Chỉ AUTO_INCREMENT |
| Phù hợp cho | DBA, kiểm tra nhanh | Ứng dụng, script tự động |
Lưu ý: Giá trị AUTO_INCREMENT không giảm khi xóa bản ghi. Sau DELETE, giá trị tiếp theo vẫn tăng tiếp. Dùng TRUNCATE TABLE hoặc ALTER TABLE ... AUTO_INCREMENT = 1 để reset.