4 วิธีแก้ปัญหาเมื่อข้อ จำกัด เฉพาะป้องกันไม่ให้คุณแทรกระเบียนใหม่ใน SQL Server

แบ่งปันเลย:

หากคุณไม่สามารถแทรกระเบียนใหม่ลงในตารางเนื่องจากข้อ จำกัด เฉพาะอย่าพลาดที่จะอ่านบทความนี้ มันจะช่วยคุณแก้ปัญหานี้

ในบทความนี้เราจะแนะนำ 4 วิธีในการแก้ปัญหาเมื่อคุณไม่สามารถแทรกระเบียนใหม่ได้เนื่องจากละเมิดข้อ จำกัด เฉพาะของตารางใน SQL Server.

กรณีจริง:

ตอนนี้เรามาดูกรณีจริง เรามีฐานข้อมูลชื่อ“ ผลิตภัณฑ์” และมีตารางที่เรียกว่า“DataNumenผลิตภัณฑ์” ในฐานข้อมูล มีสองฟิลด์ในตาราง ได้แก่ “ ProductId” และ“ ProductName” โดยมีประเภทข้อมูลเป็น“ int” และ“ varchar” ตามลำดับ และ“ ProductId” เป็นคีย์หลักที่มีข้อ จำกัด เฉพาะ

ขณะนี้มีบันทึกบางส่วนในตารางดังต่อไปนี้:บันทึกในตาราง“DataNumenผลิตภัณฑ์”

รูปที่ 1 บันทึกในตาราง“DataNumenผลิตภัณฑ์”

สมมติว่ามี DBA สองรายการสำหรับฐานข้อมูล ได้แก่ Jim และ Tom วันหนึ่งจิมลบบันทึกแรกในตารางดังต่อไปนี้:

DELETE FROM DataNumenProduct
WHERE ProductId=1;

ในวันที่สองทอมใส่ระเบียนใหม่ลงในตารางซึ่งมีคีย์หลักเดียวกันกับระเบียนที่ถูกลบดังต่อไปนี้:

INSERT INTO DataNumenProduct
VALUES(1,'DataNumen OutLook Repair');

ดังนั้นตารางของเราจึงมีบันทึกดังต่อไปนี้:

อัปเดตบันทึกในตาราง“DataNumenผลิตภัณฑ์”

รูปที่ 2 อัปเดตระเบียนในตาราง“DataNumenผลิตภัณฑ์”

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

วิธีแก้ปัญหาที่ 1: แก้ไขคีย์หลักของระเบียนใหม่เพื่อป้องกันความขัดแย้ง

เราสามารถแก้ไขคีย์หลักของระเบียนเพื่อแทรกเป็นค่าใหม่ซึ่งแตกต่างจากระเบียนที่มีอยู่ทั้งหมดในตาราง ยกตัวอย่างกรณีข้างต้นสำหรับการแทรกระเบียนเราสามารถแก้ไขค่าคีย์หลักจาก 1 ถึง 5 จากนั้นเราสามารถเรียกคืนระเบียนที่สร้างขึ้นใหม่กลับไปที่ตารางดังต่อไปนี้:

INSERT INTO DataNumenProduct VALUES(5, 'DataNumen Access Repair');

ด้านล่างนี้คือบันทึกสุดท้ายในตาราง:บันทึกสุดท้ายในตาราง“DataNumen ผลิตภัณฑ์”

รูปที่ 3 บันทึกสุดท้ายในตาราง“DataNumen ผลิตภัณฑ์”

วิธีแก้ปัญหาที่ 2: แก้ไขคีย์หลักของเรกคอร์ดที่มีอยู่เพื่อป้องกันความขัดแย้ง

  1. ขั้นแรกเราต้องอัปเดตค่าคีย์หลักของระเบียนที่มีอยู่ซึ่งอาจทำให้เกิดความขัดแย้งดังต่อไปนี้:
UPDATE DataNumenProduct
SET ProductId = 6
WHERE ProductId = 1;

ด้านล่างนี้คือบันทึกที่อัปเดตในตาราง:

อัปเดตบันทึกในตาราง“DataNumen ผลิตภัณฑ์”

รูปที่ 4 อัปเดตระเบียนในตาราง“DataNumen ผลิตภัณฑ์”

  1. จากนั้นเราสามารถกู้คืนบันทึกที่ถูกลบกลับไปที่ตารางดังต่อไปนี้:
INSERT INTO DataNumenProduct
VALUES(1, 'DataNumen Access Repair ');

ตอนนี้เรามาดูเวอร์ชันสุดท้ายดังต่อไปนี้:

บันทึกสุดท้ายในตาราง“DataNumen ผลิตภัณฑ์”

รูปที่ 5 บันทึกขั้นสุดท้ายในตาราง“DataNumen ผลิตภัณฑ์”

วิธีแก้ปัญหาที่ 3: ปิดใช้งานข้อจำกัดเฉพาะ (Unique Constraint) ชั่วคราวผ่านทาง SQL

  1. เพื่อแก้ไขปัญหานี้ เราสามารถลบข้อจำกัดคีย์หลัก “pk” ในตารางเป็นการชั่วคราวได้ดังนี้:
ALTER TABLE DataNumenProduct
DROP CONSTRAINT pk;
  1. จากนั้นเราสามารถเพิ่มกลับบันทึกที่ถูกลบลงในตารางดังต่อไปนี้:
INSERT INTO DataNumenProduct
VALUES(1, 'DataNumen Access Repair');

ตอนนี้เรามาดูบันทึกในตาราง:

อัปเดตบันทึกในตาราง“DataNumen ผลิตภัณฑ์”

รูปที่ 6 อัปเดตระเบียนในตาราง“DataNumen ผลิตภัณฑ์”

  1. จากนั้นเนื่องจากสองระเบียนมีค่าคีย์หลักเหมือนกันเราจึงต้องแก้ไขหนึ่งในนั้นเพื่อป้องกันความขัดแย้งดังต่อไปนี้:
UPDATE DataNumenProduct SET ProductId = 5
WHERE ProductName = 'DataNumen Outlook Repair';
  1. ในที่สุดเราจะเพิ่มข้อ จำกัด คีย์หลัก“ pk” กลับเข้าไปในตารางดังต่อไปนี้:
ALTER TABLE DataNumenProduct
ADD CONSTRAINT pk PRIMARY KEY(ProductId);

ตอนนี้มีบางระเบียนในตารางดังต่อไปนี้:

อัปเดตเนื้อหาในตาราง“DataNumen ผลิตภัณฑ์”

รูปที่ 7 อัปเดตเนื้อหาในตาราง“DataNumen ผลิตภัณฑ์”

วิธีแก้ปัญหาที่ 4: ปิดใช้งานข้อจำกัดเฉพาะชั่วคราวโดยใช้ SQL Server สตูดิโอการจัดการ:

  1. ในตอนแรกเราจะลบข้อ จำกัด คีย์หลัก“ pk” ในตารางผ่าน GUI ดังต่อไปนี้:

ลบข้อ จำกัด คีย์หลัก“ pk” ผ่าน GUI

รูปที่ 8 ลบข้อ จำกัด คีย์หลัก“ pk” ผ่าน GUI

  1. จากนั้นเราใส่บันทึกที่ถูกลบในกรณีจริงในตารางดังต่อไปนี้
INSERT INTO DataNumenProduct
VALUES(1, 'DataNumen Access Repair');

ตอนนี้มีบางระเบียนในตารางดังต่อไปนี้:

อัปเดตเนื้อหาในตาราง“DataNumen ผลิตภัณฑ์”

รูปที่ 9 ปรับปรุงเนื้อหาในตาราง“DataNumen ผลิตภัณฑ์”

  1. จากนั้นเราจะแก้ไขค่าคีย์หลักของเรกคอร์ดที่มีอยู่ในตารางดังต่อไปนี้:
UPDATE DataNumenProduct
SET ProductId = 5
WHERE ProductName = 'DataNumen Outlook Repair';
  1. ในที่สุดเราจะเพิ่มข้อ จำกัด คีย์หลัก“ pk” กลับเข้าไปในตารางผ่าน GUI ดังต่อไปนี้:เพิ่ม Back the Primary Key Constraint“ pk” ผ่าน GUI

รูปที่ 8 เพิ่มข้อ จำกัด คีย์หลัก“ pk” กลับผ่าน GUI

แก้ SQL Server ฐานข้อมูลเสียหาย

นอกเหนือจากข้อ จำกัด เฉพาะ SQL Server คอรัปชั่น ยังเป็นปัญหาที่พบบ่อยมาก DBA ที่น่ารำคาญ โดยปกติเราสามารถใช้ SQL Server คำสั่งในตัวเพื่อแก้ปัญหาความเสียหาย อย่างไรก็ตามหากไม่ได้ผลเราสามารถใช้บุคคลที่สามได้ SQL Server เครื่องมือการกู้คืนข้อมูล

บทนำผู้เขียน:

Jim Hu เป็นผู้เชี่ยวชาญด้านการกู้คืนข้อมูลใน DataNumen, Inc. ซึ่งเป็นผู้นำระดับโลกด้านเทคโนโลยีการกู้คืนข้อมูล ได้แก่ เข้าถึงการซ่อมแซม และ dbf ซ่อมแซมผลิตภัณฑ์ซอฟต์แวร์ ดูข้อมูลเพิ่มเติมได้ที่ wwwdatanumenด้วย.

แบ่งปันเลย:

ความเห็นถูกปิด