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

Có thể chèn bản ghi vào bảng MySQL mà không chỉ định giá trị AUTO_INCREMENT không?

Có, hoàn toàn được. Khi một cột được định nghĩa là AUTO_INCREMENT (thường là khóa chính), MySQL sẽ tự động gán giá trị tăng dần nếu bạn không đưa cột đó vào danh sách cột hoặc truyền giá trị NULL / 0 (tùy chế độ SQL).

Cách làm đúng chuẩn

Chỉ liệt kê các cột không phải AUTO_INCREMENT trong câu INSERT:

INSERT INTO ten_bang (cot_khong_auto) VALUES (gia_tri);

Ví dụ minh họa

Tạo bảng nhân viên với EmployeeId tự động tăng:

mysql> CREATE TABLE DemoTable1479 (
    -> EmployeeId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> EmployeeSalary INT
    -> );
Query OK, 0 rows affected (0.86 sec)

Chèn lương mà không đề cập EmployeeId:

mysql> INSERT INTO DemoTable1479(EmployeeSalary) VALUES(6800);
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO DemoTable1479(EmployeeSalary) VALUES(5600);
Query OK, 1 row affected (0.11 sec)
mysql> INSERT INTO DemoTable1479(EmployeeSalary) VALUES(5700);
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable1479(EmployeeSalary) VALUES(6900);
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable1479(EmployeeSalary) VALUES(15000);
Query OK, 1 row affected (0.11 sec)

Kết quả - MySQL tự gán ID 1,2,3,4,5:

+------------+----------------+
| EmployeeId | EmployeeSalary |
+------------+----------------+
|          1 |           6800 |
|          2 |           5600 |
|          3 |           5700 |
|          4 |           6900 |
|          5 |          15000 |
+------------+----------------+

Lưu ý thêm

  • Nếu bạn muốn chỉ định ID thủ công, hãy đưa cột ID vào danh sách cột và truyền giá trị cụ thể (miễn là không trùng khóa chính).
  • Tránh truyền 0 cho cột AUTO_INCREMENT trừ khi bật chế độ NO_AUTO_VALUE_ON_ZERO, vì MySQL có thể hiểu là "tự gán" chứ không phải "gán giá trị 0".
  • Cách này áp dụng cho mọi engine (InnoDB, MyISAM, v.v.).