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

Cách kiểm tra cột có phải AUTO_INCREMENT trong MySQL?

Kiểm tra cột AUTO_INCREMENT trong MySQL qua INFORMATION_SCHEMA

Truy vấn INFORMATION_SCHEMA.COLUMNS lọc cột có EXTRA LIKE '%auto_increment%'.

Cú pháp

SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = 'yourDatabase' 
  AND TABLE_NAME = 'yourTable' 
  AND EXTRA LIKE '%auto_increment%';

Ví dụ

Tạo bảng có AUTO_INCREMENT:

mysql> CREATE TABLE autoIncrementTableDemo (
    -> ClientId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> ClientName VARCHAR(20),
    -> ClientAge INT,
    -> ClientAddress VARCHAR(100),
    -> ClientCountryName VARCHAR(100)
    -> );

Truy vấn tìm cột auto_increment:

mysql> SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = 'test' 
  AND TABLE_NAME = 'autoIncrementTableDemo' 
  AND EXTRA LIKE '%auto_increment%';

Kết quả:

+-------------+
| COLUMN_NAME |
+-------------+
| ClientId    |
+-------------+

Các cách khác

Ví dụ DESC

mysql> DESC autoIncrementTableDemo;
+------------------+--------------+------+-----+---------+----------------+
| Field            | Type         | Null | Key | Default | Extra          |
+------------------+--------------+------+-----+---------+----------------+
| ClientId         | int(11)      | NO   | PRI | NULL    | auto_increment |
| ClientName       | varchar(20)  | YES  |     | NULL    |                |
| ClientAge        | int(11)      | YES  |     | NULL    |                |
| ClientAddress    | varchar(100) | YES  |     | NULL    |                |
| ClientCountryName| varchar(100) | YES  |     | NULL    |                |
+------------------+--------------+------+-----+---------+----------------+

Ứng dụng

  • Dynamic SQL: Xác định cột PK tự động để build query
  • Schema migration tool: Kiểm tra trước khi ALTER
  • ORM/Framework: Tự động mapping entity
  • Audit: Kiểm tra naming convention PK

Lưu ý

  • Chỉ 1 cột AUTO_INCREMENT mỗi bảng
  • Phải là khóa chính (PRIMARY KEY) hoặc có UNIQUE INDEX
  • Kiểu dữ liệu: INT, BIGINT, SMALLINT, TINYINT, MEDIUMINT
Phương phápCú phápĐặc điểm
INFORMATION_SCHEMASELECT ... WHERE EXTRA LIKE '%auto_increment%'Chuẩn SQL, lọc được nhiều bảng, dùng trong query
SHOW COLUMNSSHOW COLUMNS FROM table LIKE 'col%'Xem Extra column có 'auto_increment'
DESCDESC tableNhanh, Extra column hiển thị auto_increment
SHOW CREATE TABLESHOW CREATE TABLE tableXem AUTO_INCREMENT trong DDL