หากคุณไม่สามารถแทรกระเบียนใหม่ลงในตารางเนื่องจากข้อ จำกัด เฉพาะอย่าพลาดที่จะอ่านบทความนี้ มันจะช่วยคุณแก้ปัญหานี้
ในบทความนี้เราจะแนะนำ 4 วิธีในการแก้ปัญหาเมื่อคุณไม่สามารถแทรกระเบียนใหม่ได้เนื่องจากละเมิดข้อ จำกัด เฉพาะของตารางใน SQL Server.
กรณีจริง:
ตอนนี้เรามาดูกรณีจริง เรามีฐานข้อมูลชื่อ“ ผลิตภัณฑ์” และมีตารางที่เรียกว่า“DataNumenผลิตภัณฑ์” ในฐานข้อมูล มีสองฟิลด์ในตาราง ได้แก่ “ ProductId” และ“ ProductName” โดยมีประเภทข้อมูลเป็น“ int” และ“ varchar” ตามลำดับ และ“ ProductId” เป็นคีย์หลักที่มีข้อ จำกัด เฉพาะ
ขณะนี้มีบันทึกบางส่วนในตารางดังต่อไปนี้:
รูปที่ 1 บันทึกในตาราง“DataNumenผลิตภัณฑ์”
สมมติว่ามี DBA สองรายการสำหรับฐานข้อมูล ได้แก่ Jim และ Tom วันหนึ่งจิมลบบันทึกแรกในตารางดังต่อไปนี้:
DELETE FROM DataNumenProduct WHERE ProductId=1;
ในวันที่สองทอมใส่ระเบียนใหม่ลงในตารางซึ่งมีคีย์หลักเดียวกันกับระเบียนที่ถูกลบดังต่อไปนี้:
INSERT INTO DataNumenProduct VALUES(1,'DataNumen OutLook Repair');
ดังนั้นตารางของเราจึงมีบันทึกดังต่อไปนี้:
รูปที่ 2 อัปเดตระเบียนในตาราง“DataNumenผลิตภัณฑ์”
ตอนนี้หากจิมต้องการกู้คืนบันทึกที่ถูกลบกลับไปที่ตารางจะเป็นการละเมิดข้อ จำกัด เฉพาะของคีย์หลัก“ ProductId” ในกรณีนี้เราสามารถใช้วิธีแก้ปัญหาด้านล่างเพื่อแก้ปัญหาได้
วิธีแก้ปัญหาที่ 1: แก้ไขคีย์หลักของระเบียนใหม่เพื่อป้องกันความขัดแย้ง
เราสามารถแก้ไขคีย์หลักของระเบียนเพื่อแทรกเป็นค่าใหม่ซึ่งแตกต่างจากระเบียนที่มีอยู่ทั้งหมดในตาราง ยกตัวอย่างกรณีข้างต้นสำหรับการแทรกระเบียนเราสามารถแก้ไขค่าคีย์หลักจาก 1 ถึง 5 จากนั้นเราสามารถเรียกคืนระเบียนที่สร้างขึ้นใหม่กลับไปที่ตารางดังต่อไปนี้:
INSERT INTO DataNumenProduct VALUES(5, 'DataNumen Access Repair');
ด้านล่างนี้คือบันทึกสุดท้ายในตาราง:
รูปที่ 3 บันทึกสุดท้ายในตาราง“DataNumen ผลิตภัณฑ์”
วิธีแก้ปัญหาที่ 2: แก้ไขคีย์หลักของเรกคอร์ดที่มีอยู่เพื่อป้องกันความขัดแย้ง
- ขั้นแรกเราต้องอัปเดตค่าคีย์หลักของระเบียนที่มีอยู่ซึ่งอาจทำให้เกิดความขัดแย้งดังต่อไปนี้:
UPDATE DataNumenProduct SET ProductId = 6 WHERE ProductId = 1;
ด้านล่างนี้คือบันทึกที่อัปเดตในตาราง:
รูปที่ 4 อัปเดตระเบียนในตาราง“DataNumen ผลิตภัณฑ์”
- จากนั้นเราสามารถกู้คืนบันทึกที่ถูกลบกลับไปที่ตารางดังต่อไปนี้:
INSERT INTO DataNumenProduct VALUES(1, 'DataNumen Access Repair ');
ตอนนี้เรามาดูเวอร์ชันสุดท้ายดังต่อไปนี้:
รูปที่ 5 บันทึกขั้นสุดท้ายในตาราง“DataNumen ผลิตภัณฑ์”
วิธีแก้ปัญหาที่ 3: ปิดใช้งานข้อจำกัดเฉพาะ (Unique Constraint) ชั่วคราวผ่านทาง SQL
- เพื่อแก้ไขปัญหานี้ เราสามารถลบข้อจำกัดคีย์หลัก “pk” ในตารางเป็นการชั่วคราวได้ดังนี้:
ALTER TABLE DataNumenProduct DROP CONSTRAINT pk;
- จากนั้นเราสามารถเพิ่มกลับบันทึกที่ถูกลบลงในตารางดังต่อไปนี้:
INSERT INTO DataNumenProduct VALUES(1, 'DataNumen Access Repair');
ตอนนี้เรามาดูบันทึกในตาราง:
รูปที่ 6 อัปเดตระเบียนในตาราง“DataNumen ผลิตภัณฑ์”
- จากนั้นเนื่องจากสองระเบียนมีค่าคีย์หลักเหมือนกันเราจึงต้องแก้ไขหนึ่งในนั้นเพื่อป้องกันความขัดแย้งดังต่อไปนี้:
UPDATE DataNumenProduct SET ProductId = 5 WHERE ProductName = 'DataNumen Outlook Repair';
- ในที่สุดเราจะเพิ่มข้อ จำกัด คีย์หลัก“ pk” กลับเข้าไปในตารางดังต่อไปนี้:
ALTER TABLE DataNumenProduct ADD CONSTRAINT pk PRIMARY KEY(ProductId);
ตอนนี้มีบางระเบียนในตารางดังต่อไปนี้:
รูปที่ 7 อัปเดตเนื้อหาในตาราง“DataNumen ผลิตภัณฑ์”
วิธีแก้ปัญหาที่ 4: ปิดใช้งานข้อจำกัดเฉพาะชั่วคราวโดยใช้ SQL Server สตูดิโอการจัดการ:
- ในตอนแรกเราจะลบข้อ จำกัด คีย์หลัก“ pk” ในตารางผ่าน GUI ดังต่อไปนี้:
รูปที่ 8 ลบข้อ จำกัด คีย์หลัก“ pk” ผ่าน GUI
- จากนั้นเราใส่บันทึกที่ถูกลบในกรณีจริงในตารางดังต่อไปนี้
INSERT INTO DataNumenProduct VALUES(1, 'DataNumen Access Repair');
ตอนนี้มีบางระเบียนในตารางดังต่อไปนี้:
รูปที่ 9 ปรับปรุงเนื้อหาในตาราง“DataNumen ผลิตภัณฑ์”
- จากนั้นเราจะแก้ไขค่าคีย์หลักของเรกคอร์ดที่มีอยู่ในตารางดังต่อไปนี้:
UPDATE DataNumenProduct SET ProductId = 5 WHERE ProductName = 'DataNumen Outlook Repair';
- ในที่สุดเราจะเพิ่มข้อ จำกัด คีย์หลัก“ pk” กลับเข้าไปในตารางผ่าน GUI ดังต่อไปนี้:
รูปที่ 8 เพิ่มข้อ จำกัด คีย์หลัก“ pk” กลับผ่าน GUI
แก้ SQL Server ฐานข้อมูลเสียหาย
นอกเหนือจากข้อ จำกัด เฉพาะ SQL Server คอรัปชั่น ยังเป็นปัญหาที่พบบ่อยมาก DBA ที่น่ารำคาญ โดยปกติเราสามารถใช้ SQL Server คำสั่งในตัวเพื่อแก้ปัญหาความเสียหาย อย่างไรก็ตามหากไม่ได้ผลเราสามารถใช้บุคคลที่สามได้ SQL Server เครื่องมือการกู้คืนข้อมูล
บทนำผู้เขียน:
Jim Hu เป็นผู้เชี่ยวชาญด้านการกู้คืนข้อมูลใน DataNumen, Inc. ซึ่งเป็นผู้นำระดับโลกด้านเทคโนโลยีการกู้คืนข้อมูล ได้แก่ เข้าถึงการซ่อมแซม และ dbf ซ่อมแซมผลิตภัณฑ์ซอฟต์แวร์ ดูข้อมูลเพิ่มเติมได้ที่ wwwdatanumenด้วย.








