MySQL INSERT DUPLICATE KEY UPDATE เป็นคำสั่งที่ใช้ INSERT or UPDATE ข้อมูลโดยหากข้อมูลที่ INSERT มีอยู่แล้วจะใช้การ UPDATE หรือยังยังไม่มีจะเป็นการ INSERT ตามปกติ
ตามตัวอย่างผมจะเก็บ LOG ว่า IP แต่ล่ะ IP มีการเข้ามาใช้งานเว็บไซต์กี่ครั้งต่อวัน ผมออกแบบตารางดังตัวอย่างครับ
count_ip
CREATE TABLE `count_ip` (
`ID` int(10) NOT NULL auto_increment,
`DATE` date NOT NULL,
`IP` varchar(32) NOT NULL,
`NUM` varchar(3) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `IP` (`IP`,`DATE`)
)
ตัวอย่าง (1) ผมจะใช้การ INSERT ตามปกติพร้อมเงื่อนไขว่าถ้า Key ซ้ำให้ UPDATE ฟิวส์ NUM = NUM + 1
Code
INSERT INTO count_ip (DATE,IP,NUM) VALUES ('2008-01-18','127.0.0.1','1') ON DUPLICATE KEY UPDATE NUM=NUM+1
นอกจากกนี้ MySQL 5 ยังสามารถทำการ INSERT ได้ 2 Statement ได้อีกด้วยครับ
Code
INSERT INTO count_ip (DATE,IP,NUM) VALUES ('2008-01-18','127.0.0.1','1') ,('2008-01-18','127.0.0.2','1') ON DUPLICATE KEY UPDATE NUM=NUM+1