4 გამოსავალი, როდესაც უნიკალური შეზღუდვა ხელს უშლის თქვენ ახალი ჩანაწერის ჩასმაში SQL Server

გააზიარე ახლა:

თუ უნიკალური შეზღუდვის გამო ვერ მოახერხეთ ცხრილში ახალი ჩანაწერის ჩასმა, არ გამოტოვოთ ამ სტატიის წაკითხვა. ის დაგეხმარებათ ამ პრობლემის მოგვარებაში.

ამ სტატიაში ჩვენ წარმოგიდგენთ 4 მეთოდს პრობლემის გადასაჭრელად, როდესაც თქვენ ვერ შეძლებთ ახალი ჩანაწერის ჩასმას, რადგან ის არღვევს ცხრილის უნიკალურ შეზღუდვას. SQL Server.

რეალური შემთხვევა:

ახლა ვნახოთ რეალური შემთხვევა. ჩვენ გვაქვს მონაცემთა ბაზა სახელწოდებით "პროდუქტი" და არის ცხრილი სახელწოდებით "DataNumenპროდუქტი“ მონაცემთა ბაზაში. ცხრილში არის ორი ველი, ანუ "ProductId" და "ProductName", მონაცემთა ტიპებით "int" და "varchar" შესაბამისად. და "ProductId" არის პირველადი გასაღები უნიკალური შეზღუდვით.

ამჟამად ცხრილში რამდენიმე ჩანაწერია, როგორც ქვემოთ:ჩანაწერები ცხრილში "DataNumenპროდუქტი”

სურათი 1 ჩანაწერები ცხრილში “DataNumenპროდუქტი”

ვივარაუდოთ, რომ არსებობს ორი DBA მონაცემთა ბაზისთვის, ანუ ჯიმ და ტომ. ერთ დღეს ჯიმმა წაშალა პირველი ჩანაწერი ცხრილში, როგორც ქვემოთ:

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: უნიკალური შეზღუდვის დროებით გამორთვა 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-ს მეშვეობით, როგორც ქვემოთ:დაამატეთ ძირითადი გასაღების შეზღუდვა "pk" GUI-ის საშუალებით

სურათი 8 დაამატე ძირითადი გასაღების შეზღუდვა „pk“ GUI-ის საშუალებით

გადაწყვეტა SQL Server მონაცემთა ბაზის კორუფცია

გარდა უნიკალური შეზღუდვებისა, SQL Server კორუფციის ასევე ძალიან გავრცელებული პრობლემაა DBA-ების შემაშფოთებელი. ჩვეულებრივ შეგვიძლია გამოვიყენოთ SQL Server ჩაშენებული ბრძანებები კორუფციების მოსაგვარებლად. თუმცა, თუ ისინი არ მუშაობენ, მაშინ შეგვიძლია მივმართოთ რომელიმე მესამე მხარეს SQL Server მონაცემთა აღდგენის ინსტრუმენტები.

ავტორი შესავალი:

ჯიმ ჰუ არის მონაცემთა აღდგენის ექსპერტი DataNumen, Inc., რომელიც მსოფლიო ლიდერია მონაცემთა აღდგენის ტექნოლოგიებში, მათ შორის წვდომის შეკეთება მდე dbf პროგრამული პროდუქტების შეკეთება. დამატებითი ინფორმაციისთვის ეწვიეთ www.datanumen. ერთად

გააზიარე ახლა:

კომენტარები დახურულია.