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