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).