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

Quên thiết lập AUTO_INCREMENT? Có thể thêm sau trong MySQL?

Thêm AUTO_INCREMENT cho cột đã tồn tại trong MySQL

Có, bạn có thể thêm AUTO_INCREMENT sau khi tạo bảng bằng ALTER TABLE ... MODIFY COLUMN.

Ví dụ: Bảng quên AUTO_INCREMENT

Tạo bảng không có AUTO_INCREMENT:

mysql> CREATE TABLE forgetToSetAutoIncrementDemo (
    -> StudentId INT,
    -> StudentName VARCHAR(30)
    -> );

Kiểm tra cấu trúc - chưa có auto_increment:

+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| StudentId   | int(11)     | YES  |     | NULL    |       |
| StudentName | varchar(30) | YES  |     | NULL    |       |
+-------------+-------------+------+-----+---------+-------+

Thêm AUTO_INCREMENT và PRIMARY KEY

mysql> ALTER TABLE forgetToSetAutoIncrementDemo 
MODIFY COLUMN StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY;
Query OK, 0 rows affected (2.12 sec)

Kiểm tra lại - đã có auto_increment:

+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| StudentId   | int(11)     | NO   | PRI | NULL    | auto_increment |
| StudentName | varchar(30) | YES  |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+

Chèn dữ liệu kiểm tra

mysql> INSERT INTO forgetToSetAutoIncrementDemo(StudentName) VALUES 
('Larry'), ('Chris'), ('Robert');

mysql> SELECT * FROM forgetToSetAutoIncrementDemo;

Kết quả - StudentId tự động gán 1,2,3:

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1         | Larry       |
| 2         | Chris       |
| 3         | Robert      |
+-----------+-------------+

Lưu ý quan trọng

  • Cột phải là NOT NULL để làm AUTO_INCREMENT
  • Thường kết hợp với PRIMARY KEY (nhưng không bắt buộc)
  • Nếu bảng đã có data, MySQL sẽ tự gán giá trị cho các hàng hiện có
  • Giá trị AUTO_INCREMENT tiếp theo = MAX(id) + 1
  • Không thể thêm AUTO_INCREMENT cho cột không phải kiểu số nguyên (INT, BIGINT, etc.)

Cách khác: CHANGE COLUMN

ALTER TABLE table_name CHANGE COLUMN col_name col_name INT AUTO_INCREMENT PRIMARY KEY;

MODIFY giữ nguyên tên cột, CHANGE cho phép đổi tên cột.