Monday, July 9, 2007

MySQL : INSERT ON DUPLICATE KEY UPDATE

INSERT ON DUPLICATE KEY UPDATE
การ insert ข้อมูลบางครั้งอาจจะเกิดขึ้นผิดพลาดได้เนื่องมาจากการที่มี Key ซ้ำกัน
ปัญหาพวกนี้ส่วนใหญ่จะมาจากการ Insert แบบ Select คือ การ select ข้อมูลจาก Table หนึ่ง ไป อีก Table หนึ่ง
ซึ่งถ้ามี การทำ PRIMARY KEY ใว้ถ้าเกิดทั้ง 2 Table นั้นซ้ำกันก็จะเกิดข้อผิดพลาดไม่สามารถ INSERT ได้
วิธีแก้ก็สามารถใช้การ UPDATE แทนได้แต่ก็ทำได้แค่การ update ไม่สามารถ INSERT ได้
วันนี้จึงนำเสนอวิธีการ INSERT พร้อมทั้ง UPDATE Record ที่ซ้ำกันไปด้วยด้วยคำสั่งนี้ครับ

ตัวอย่าง :
Table1 : id , name , age
Table2 : id , name , age

SQL> INSERT INTO table1
SELECT * FROM table1
ON DUPLICATE KEY UPDATE table2.age = table2.age+table1.age;

จาก Script นี้เมื่อมีการ INSERT ข้อมูลลงใน Table2 โดยการเรียกข้อมูลจาก Table1 มา Insert
แต่ถ้าหากมี id ซ้ำกัน ในบรรทัด ON DUPLICATE KEY UPDATE จะทำการ update แทนที่จะ insert เข้าไปใหม่แทน
ผลที่ได้ก้คือจะนำเอา age ของ Table2 มาบวกกับ age ของ Table1

No comments:

Google AdSense