Conditional Insert: เพิ่มข้อมูลก็ต่อเมื่อไม่มีข้อมูลซ้ำ
ใช้ตาราง DUAL (ตารางดัมมี่ใน MySQL) ร่วมกับ NOT EXISTS เพื่อ Insert ข้อมูลก็ต่อเมื่อไม่มีข้อมูลที่ตรงตามเงื่อนไขอยู่แล้ว
รูปแบบคำสั่ง (Syntax)
INSERT INTO yourTableName (col1, col2, ...)
SELECT val1, val2, ...
FROM DUAL
WHERE NOT EXISTS (
SELECT * FROM yourTableName
WHERE condition_to_check_duplicate
);
ตัวอย่างการใช้งาน
สร้างตาราง ConditionalInsertDemo:
CREATE TABLE ConditionalInsertDemo (
UserId INT,
TotalUser INT,
NumberOfItems INT
);
ข้อมูลเดิม:
| UserId | TotalUser | NumberOfItems |
|---|---|---|
| 101 | 560 | 780 |
| 102 | 660 | 890 |
| 103 | 450 | 50 |
Insert เฉพาะเมื่อไม่มี UserId=104 และ NumberOfItems=3500 อยู่แล้ว:
INSERT INTO ConditionalInsertDemo (UserId, TotalUser, NumberOfItems)
SELECT 104, 900, 3500
FROM DUAL
WHERE NOT EXISTS (
SELECT * FROM ConditionalInsertDemo
WHERE UserId = 104 AND NumberOfItems = 3500
);
ผลลัพธ์ - ข้อมูลถูกเพิ่ม:
| UserId | TotalUser | NumberOfItems |
|---|---|---|
| 101 | 560 | 780 |
| 102 | 660 | 890 |
| 103 | 450 | 50 |
| 104 | 900 | 3500 |
ประโยชน์: ป้องกันข้อมูลซ้ำ (Duplicate) ได้ในคำสั่งเดียวโดยไม่ต้องเขียน Application Logic แยก