"ผิดพลาด" ของ DML-Command Update MySQL
โปรแกรมเมอร์แต่ละคนที่ต้องทำงานกับฐานข้อมูลที่ต้องเผชิญกับ DML-operators (ต่อ กับภาษาอังกฤษ - "ภาษาจัดการข้อมูล") เช่น เลือก, แทรก, ลบ และ ปรับปรุง. สภาพแวดล้อมของ MySQL ยังใช้คำสั่งทั้งหมดในคลังแสงของตน
ผู้ประกอบการเหล่านี้มีเหตุผลพูดของพวกเขาวัตถุประสงค์ - เลือกระเบียนแทรกค่าใหม่อัพเดตข้อมูลที่มีอยู่สมบูรณ์หรือตามเงื่อนไขที่ระบุลบข้อมูลในฐานข้อมูล การสอนเนื้อหาทางทฤษฎีอธิบายรายละเอียดเกี่ยวกับหลักการทำงานของแต่ละทีมและไวยากรณ์ แต่ไม่มีการพูดถึงความยากลำบากที่อาจเกิดขึ้นในระหว่างการใช้งาน เนื้อหานี้จะทุ่มเทให้กับการพิจารณาบางส่วน
สรุปเกี่ยวกับผู้ให้บริการ DML (แทรก)
ก่อนที่จะดำเนินการต่อไปจำเป็นต้องเรียกคืนอีกครั้งในรายละเอียดเพิ่มเติมเกี่ยวกับวัตถุประสงค์ของแต่ละฟังก์ชัน เราจะสนใจสองผู้ประกอบการ: แทรก และ ปรับปรุงเนื่องจากปัญหาเหล่านี้เกิดจากการประมวลผลข้อมูลจำนวนมาก.
เริ่มต้นด้วยคำสั่ง แทรก, จากนั้นจึงย้ายไปที่ ปรับปรุง MySQL ระบบเช่นเดียวกับระบบอื่น ๆ ที่ทันสมัย DBMS ใช้การดำเนินงาน แทรก เพิ่มรายการใหม่ลงในรายการที่มีอยู่ตารางฐานข้อมูล ไวยากรณ์ของการดำเนินการนี้ง่ายมากและตรงไปตรงมา มีการแจงนับเขตข้อมูลซึ่งจะมีการป้อนค่าปลายทางปลายทาง - ชื่อของตารางและรายการของรายการโดยตรง เมื่อดำเนินการคำสั่งแต่ละครั้ง แทรก ฐานข้อมูลจะได้รับการปรับปรุงด้วยค่าใหม่
ผู้ดำเนินการอัพเดต
อย่างไรก็ตามในทางปฏิบัติค่อนข้างมักจะเกิดขึ้นสถานการณ์คือสำหรับชุดข้อมูลหนึ่งชุดต้องอัพเดตค่าแอตทริบิวต์ตั้งแต่หนึ่งรายการขึ้นไป ตัวอย่างเช่นเราสามารถอ้างอิงสถานการณ์เมื่อองค์กรดำเนินการปฏิรูปโดยมีการเปลี่ยนชื่อใหม่ของแผนกหลัก ในกรณีนี้จำเป็นต้องทำการเปลี่ยนแปลงสำหรับแต่ละแผนก ถ้าเปลี่ยนชื่อแล้วปัญหาจะแก้ไขได้อย่างรวดเร็ว แต่ถ้าการเข้ารหัสของแต่ละคอมโพเนนต์ของการผลิตทั้งหมดมีการเปลี่ยนแปลงซึ่งตามกฎจะทำหน้าที่เป็นคีย์หลักนี้จะทำให้เกิดการเปลี่ยนแปลงข้อมูลและพนักงานแต่ละคน
เพื่อแก้ปัญหาที่กำลังพิจารณาคุณสามารถใช้ ผู้ดำเนินงาน DML - ปรับปรุง MySQL-เซิร์ฟเวอร์, การดำเนินงานที่มีจำนวนมากของระเบียน,ด้วยความช่วยเหลือของผู้ดำเนินการอัปเดตให้รันการสอบถามที่ต้องการและแก้ปัญหา แต่บางครั้งในระหว่างการปรับปรุงไม่ค่อยเข้าใจและยากที่จะอธิบายปัญหา เกี่ยวกับความซับซ้อนของการปรับปรุงระเบียนที่จะกล่าวถึงในภายหลัง
เกี่ยวกับสิ่งเล็กน้อยที่กล่าวในทฤษฎี ...
คำสั่ง Update (ปรับปรุง)ใช้เพื่ออัปเดตระเบียนที่มีอยู่ในตาราง แต่ในทางปฏิบัติลูกค้าที่เข้าถึงเซิร์ฟเวอร์ฐานข้อมูลไม่เป็นที่รู้จักกันเสมอมีชุดข้อมูลบางอย่างอยู่ในตารางหรือไม่ การตรวจสอบเบื้องต้นเกี่ยวกับความพร้อมใช้งานของข้อมูลในฐานข้อมูลสำหรับการปรับปรุงที่ตามมาจะนำไปสู่การเสียเวลาและการใช้ความสามารถของเซิร์ฟเวอร์
เพื่อป้องกันปัญหานี้ DBMS มีการออกแบบพิเศษ MySQL - แทรก * Update, ซึ่งสามารถแทรกหรืออัปเดตได้เป็นอิสระจากกันและกัน นั่นคือเมื่อมีรายการสำหรับเงื่อนไขบางอย่างในตารางการอัปเดตจะเกิดขึ้น หากไม่พบข้อมูลเกี่ยวกับเงื่อนไขที่ระบุเซิร์ฟเวอร์ MySQL จะสามารถดำเนินการตามคำขอเพิ่มข้อมูลได้
อัปเดตข้อมูลหากมีรายการที่ซ้ำกัน
องค์ประกอบสำคัญของเรื่องนี้ แทรก-แบบสอบถามในระบบการจัดการฐานข้อมูล MySQL - "เกี่ยวกับการปรับปรุงคีย์ซ้ำ" คอนโซล ไวยากรณ์ที่สมบูรณ์ของแบบสอบถามมีดังนี้: "ใส่ค่า test_table (employer_id, name) (1, "Abramov") ในการอัปเดตคีย์ที่ซ้ำกัน last_modified = NOW ();"
สามารถใช้คำขอดังกล่าวได้การลงทะเบียนการกระทำของพนักงานตัวอย่างเช่นการกำหนดเวลาที่จะข้ามองค์กรเข้ากับการคำนวณเวลาต่อมาของการพักและการระบุความล่าช้า เพื่อที่จะไม่ใส่ข้อมูลลงในตารางหลายเร็กคอร์ดก็เพียงพอสำหรับพนักงานแต่ละคนในการเก็บระเบียนด้วยการอัปเดตแบบถาวร เป็นการออกแบบเช็คที่ซ้ำกันซึ่งช่วยให้คุณสามารถทำเช่นนี้ได้
ที่จริงเกี่ยวกับปัญหา ...
พิจารณาตัวอย่างข้างต้นของการลงทะเบียนการกระทำของพนักงานที่ด่านการใช้งานของตนเอง aggrandizing (รถยนต์_การเพิ่มขึ้น) ซึ่งโดยปกติจะใช้เพื่อเติมค่าของคีย์หลัก (ประถม_สำคัญ) เมื่อใช้คำสั่ง อัพเดต MySQL ในการก่อสร้างด้วย แทรก รถยนต์_เพิ่มขึ้น, เขตข้อมูลจะเพิ่มขึ้นอย่างต่อเนื่อง
ในทำนองเดียวกันทุกอย่างเกิดขึ้นเมื่อการออกแบบทดแทนจะใช้ในกรณีของการตรวจสอบรายการที่ซ้ำกัน ค่า "ช่วยชีวิต" เพิ่มขึ้นแม้ว่าจะไม่จำเป็นก็ตาม ด้วยเหตุนี้มีปัญหาเกี่ยวกับค่าที่หายไปหรือล้นในช่วงซึ่งต่อมานำไปสู่การหยุดชะงักของประสิทธิภาพของระบบการจัดการฐานข้อมูล
ความน่าจะเป็นที่ยิ่งใหญ่ที่สุดของการเกิดปัญหา
ปัญหาควรได้รับการพิจารณา เว็บ(เว็บไซต์อินเตอร์เน็ตพอร์ทัล ฯลฯ ) เมื่อมีการดำเนินการเป็นจำนวนมากในระบบ แทรก และ อัปเดต MySQL
PHP-การเรียกใช้ฐานข้อมูลจะทำบ่อยมาก ดังนั้นความสำเร็จของค่าสูงสุดตามเขตข้อมูลที่กำหนดไว้เป็น auto_increment, เกิดขึ้นได้อย่างรวดเร็วและเมื่อวิเคราะห์ปัญหาที่พบมันเป็นไปไม่ได้ที่จะสร้างเหตุผลได้ทันที
ดังนั้นนักพัฒนาควรที่จะระมัดระวังในการใช้โครงสร้าง คีย์ซ้ำ ในทีม การอัพเดต mysql เลือก - แบบสอบถามเมื่อเข้าถึงเซิร์ฟเวอร์ฐานข้อมูลจะทำงานได้โดยไม่มีข้อผิดพลาด แต่การเพิ่มระเบียนใหม่ลงในฐานข้อมูลจะเต็มไปด้วยสถานการณ์ที่ไม่พึงประสงค์ซึ่งต่อมาจะนำไปสู่ปัญหาร้ายแรง เป็นทางเลือกแนะนำให้ใช้สำหรับฟิลด์ autoincremental เพื่อเริ่มต้นตรวจสอบความพร้อมใช้งานของระเบียนสำหรับพวกเขาจากนั้นอัปเดตข้อมูลเหล่านั้น