INSERT ON DUPLICATE KEY UPDATE ทำอะไรใน MySQL

Insert On Duplicate Key Update Tha Xari Ni Mysql



ขณะทำงานกับฐานข้อมูล MySQL ผู้ใช้อาจพบข้อผิดพลาดการละเมิดคีย์ซ้ำเป็นครั้งคราวเมื่อพยายามแทรกบันทึกใหม่ลงในตาราง ข้อผิดพลาดนี้เกิดขึ้นเมื่อมีแถวที่มีคีย์หลักหรือคีย์เฉพาะเดียวกันอยู่แล้ว อย่างไรก็ตาม ปัญหานี้แก้ไขได้ด้วยการอัพเดตเรกคอร์ดที่มีอยู่ด้วยค่าใหม่ ในกรณีดังกล่าว การเปิดใช้งาน “ แทรกในการอัปเดตคีย์ซ้ำ คุณลักษณะ ” จะแก้ปัญหานี้ได้อย่างมีประสิทธิภาพ

โพสต์นี้จะสาธิตว่า “INSERT ON DUPLICATE KEY UPDATE” คืออะไร และวิธีการทำงานใน MySQL







INSERT ON DUPLICATE KEY UPDATE ทำอะไรใน MySQL

ใน MySQL, แทรกในการอัปเดตคีย์ซ้ำ เป็นคุณสมบัติขั้นสูงของคำสั่ง INSERT ที่รวมสองฟังก์ชันไว้ในการดำเนินการเดียว ตัวอย่างเช่น จะแทรกเรกคอร์ดลงในตารางเฉพาะหากยังไม่มีเรกคอร์ดที่กำหนด อย่างไรก็ตาม หากมีระเบียนที่ต้องการอยู่แล้ว ก็จะอัปเดตระเบียนที่มีอยู่ด้วยค่าใหม่



ในการเปิดใช้คุณสมบัติ INSERT ON DUPLICATE KEY UPDATE ผู้ใช้ต้องปฏิบัติตามไวยากรณ์ที่กำหนดด้านล่าง:



ใส่ลงใน [ table_name ] ( [ col_1 ] , [ col_2 ] , ... )
ค่านิยม ( [ val_1 ] , [ val_2 ] , ... )
ในการอัปเดตคีย์ซ้ำ [ col_1 ] = [ val_1 ] , [ col_2 ] = [ val_2 ] , ... ;





ระบุชื่อตาราง ชื่อคอลัมน์ และค่าที่คุณเลือกแทน table_name, col_1, col_2, … และ val_1, val_2, … เป็นต้น

ตัวอย่าง: วิธีการใช้ INSERT ON DUPLICATE KEY UPDATE Feature ใน MySQL?



ขั้นแรก เชื่อมต่อกับฐานข้อมูล MySQL ด้วยสิทธิ์ที่เหมาะสม จากนั้นดำเนินการคำสั่งด้านล่างเพื่อดึงข้อมูลของตาราง “linuxhint_author”:

เลือก * จาก linuxhint_author;

คำสั่ง select จะเรียกข้อมูลระเบียนทั้งหมดของตาราง “linuxhint_author”:

เรียกใช้คำสั่ง SQL ต่อไปนี้เพื่อแทรกหรืออัปเดตบันทึกเฉพาะในตาราง 'linuxhint_author' โดยเปิดใช้งานคุณลักษณะ 'ON DUPLICATE KEY UPDATE':

แทรกลงใน linuxhint_author ( รหัส , ชื่อ, อายุ, ลำดับผู้แต่ง, อีเมล )
ค่านิยม ( 6 , 'อเล็กซ์ จอห์นสัน' , 29 , 3 , 'alex@example.com' )
ในการอัปเดตคีย์ซ้ำ
ชื่อ = ค่า ( ชื่อ ) ,
อายุ = ค่านิยม ( อายุ ) ,
อันดับผู้เขียน = ค่า ( ผู้แต่งอันดับ ) ,
อีเมล = ค่า ( อีเมล ) ;

เนื่องจากระเบียนที่ระบุไม่มีอยู่ในตาราง 'linuxhint_author' จึงแทรกลงในตารางที่เลือกได้สำเร็จ:

ลองใส่บันทึกที่ซ้ำกันและดูว่า ' ในการอัปเดตคีย์ซ้ำ ” คุณลักษณะทำงานใน MySQL:

แทรกลงใน linuxhint_author ( รหัส , ชื่อ, อายุ, ลำดับผู้แต่ง, อีเมล )
ค่านิยม ( 3 , 'ไมเคิล จอห์นสัน' , 28 , 4 , 'michael@example.com' )
ในการอัปเดตคีย์ซ้ำ
ชื่อ = ค่า ( ชื่อ ) ,
อายุ = ค่านิยม ( อายุ ) ,
อันดับผู้เขียน = ค่า ( ผู้แต่งอันดับ ) ,
อีเมล = ค่า ( อีเมล ) ;

จากส่วนย่อยด้านล่าง จะเห็นได้อย่างชัดเจนว่าเรกคอร์ดที่มีอยู่แล้วได้รับการปรับปรุงเรียบร้อยแล้วด้วยค่าใหม่:

ฟีเจอร์ “แทรกบนคีย์ซ้ำ” ยังสามารถนำไปใช้กับคอลัมน์เฉพาะเจาะจงแทนทั้งเรกคอร์ด:

แทรกลงใน linuxhint_author ( รหัส , ผู้เขียนอันดับ )
ค่านิยม ( 3 , 2 )
บนคีย์ซ้ำ UPDATE authorRank = VALUES ( ผู้แต่งอันดับ ) ;

ในโค้ดข้างต้น 'authorRank' ของผู้เขียนที่มีรหัส '3' กำลังได้รับการอัปเดตเป็นค่าใหม่ '2':

นี่คือลักษณะการทำงานของฟีเจอร์ “แทรกบนการอัปเดตคีย์ซ้ำ” ใน MySQL

บทสรุป

ใน MySQL, แทรกในการอัปเดตคีย์ซ้ำ เป็นคุณสมบัติขั้นสูงที่ช่วยให้เราสามารถรวมการทำงานของการแทรกแถวใหม่และการอัปเดต/แก้ไขแถวที่มีอยู่แล้วในการดำเนินการเดียว คุณลักษณะนี้ช่วยให้ผู้ใช้หลีกเลี่ยงข้อผิดพลาด 'การละเมิดคีย์ซ้ำ' เมื่อพยายามแทรกแถวใหม่ลงในตารางใดตารางหนึ่ง โพสต์นี้ได้อธิบายว่า “INSERT ON DUPLICATE KEY UPDATE” คืออะไรและทำงานอย่างไรใน MySQL