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

Cách chèn hàng vào bảng chỉ có cột auto_increment trong MySQL?

Chèn dữ liệu vào bảng chỉ có cột AUTO_INCREMENT

Khi bảng chỉ có một cột là khóa chính AUTO_INCREMENT, bạn vẫn có thể chèn hàng bằng cách cung cấp giá trị NULL hoặc DEFAULT cho cột đó.

Cú pháp

-- Cách 1: SET column = NULL
INSERT INTO yourTableName SET yourColumnName = NULL;

-- Cách 2: VALUES (NULL)
INSERT INTO yourTableName VALUES (NULL);

-- Cách 3: DEFAULT (MySQL 8.0+)
INSERT INTO yourTableName VALUES (DEFAULT);

Ví dụ minh họa

Tạo bảng chỉ có cột UserId:

mysql> CREATE TABLE singleAutoIncrementColumnDemo (
    -> UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY
    -> );

Chèn 2 hàng:

mysql> INSERT INTO singleAutoIncrementColumnDemo SET UserId = NULL;
Query OK, 1 row affected (0.18 sec)

mysql> INSERT INTO singleAutoIncrementColumnDemo VALUES (NULL);
Query OK, 1 row affected (0.11 sec)

Kết quả:

+--------+
| UserId |
+--------+
| 1      |
| 2      |
+--------+

Giải thích

  • MySQL tự động gán giá trị tiếp theo cho AUTO_INCREMENT khi gặp NULL hoặc DEFAULT
  • Cách 1 (SET) rõ ràng hơn khi bảng có nhiều cột nhưng chỉ điền một số
  • Cách 2 (VALUES) ngắn gọn cho chèn nhanh

Mở rộng: Bảng có nhiều cột, chỉ điền AUTO_INCREMENT

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) DEFAULT 'Anonymous',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Chèn chỉ dùng default
INSERT INTO users () VALUES ();

-- Hoặc
INSERT INTO users (id) VALUES (NULL);

Lưu ý

  • Không chèn giá trị 0 (zero) - MySQL có thể coi là 0 thực sự thay vì auto-generate
  • Nếu cột là PRIMARY KEY, không thể chèn NULL nếu NO_AUTO_VALUE_ON_ZERO SQL mode bật
  • LAST_INSERT_ID() trả về ID vừa chèn