Để thêm thuộc tính AUTO_INCREMENT cho cột khóa chính đã có, dùng ALTER TABLE ... MODIFY.
Ví dụ minh họa
Tạo bảng khóa chính không auto_increment:
CREATE TABLE changePrimaryKeyInAutoIncrement (
StudentId INT NOT NULL PRIMARY KEY,
StudentName VARCHAR(100),
StudentAge INT,
StudentAddress VARCHAR(100)
);
Kiểm tra cấu trúc:
+----------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------------+--------------+------+-----+---------+-------+ | StudentId | int(11) | NO | PRI | NULL | | | StudentName | varchar(100) | YES | | NULL | | | StudentAge | int(11) | YES | | NULL | | | StudentAddress | varchar(100) | YES | | NULL | | +----------------+--------------+------+-----+---------+-------+
Thay đổi cột StudentId thành AUTO_INCREMENT:
ALTER TABLE changePrimaryKeyInAutoIncrement MODIFY StudentId INT AUTO_INCREMENT;
Cấu trúc mới:
+----------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------------+--------------+------+-----+---------+----------------+ | StudentId | int(11) | NO | PRI | NULL | auto_increment | | StudentName | varchar(100) | YES | | NULL | | | StudentAge | int(11) | YES | | NULL | | | StudentAddress | varchar(100) | YES | | NULL | | +----------------+--------------+------+-----+---------+----------------+
Lưu ý:
MODIFYyêu cầu nêu lại toàn bộ định nghĩa cột (kiểu, NULL/NOT NULL, DEFAULT...).- Cột phải là khóa chính (PRIMARY KEY) hoặc UNIQUE KEY không NULL.
- Nếu bảng đã có dữ liệu, giá trị
AUTO_INCREMENTsẽ được set = max(Id) + 1. - MySQL 8.0+ hỗ trợ
ALTER TABLE ... ALTER COLUMN ... SET DEFAULTcho generated column, nhưngAUTO_INCREMENTvẫn dùngMODIFY.