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

Tạo câu lệnh INSERT có điều kiện (Conditional Insert) trong MySQL?

Sử dụng bảng ảo DUAL kết hợp NOT EXISTS để chèn chỉ khi bản ghi chưa tồn tại.

Ví dụ:

CREATE TABLE ConditionalInsertDemo (
    UserId INT,
    TotalUser INT,
    NumberOfItems INT
);
INSERT INTO ConditionalInsertDemo VALUES (101,560,780), (102,660,890), (103,450,50);

Chèn bản ghi mới (UserId=104) chỉ nếu chưa có bản ghi cùng UserId và NumberOfItems:

INSERT INTO ConditionalInsertDemo(UserId, TotalUser, NumberOfItems)
SELECT 104, 900, 3500 FROM dual
WHERE NOT EXISTS (
    SELECT * FROM ConditionalInsertDemo
    WHERE UserId = 104 AND NumberOfItems = 3500
);

Kết quả

+--------+-----------+---------------+
| UserId | TotalUser | NumberOfItems |
+--------+-----------+---------------+
|    101 |       560 |           780 |
|    102 |       660 |           890 |
|    103 |       450 |            50 |
|    104 |       900 |          3500 |
+--------+-----------+---------------+

Lưu ý: Cách này an toàn cho chèn đơn lẻ. Với hàng loạt, cân nhắc INSERT IGNORE, ON DUPLICATE KEY UPDATE hoặc khóa duy nhất (UNIQUE KEY).