4 Λύσεις όταν ο μοναδικός περιορισμός σας εμποδίζει να εισαγάγετε μια νέα εγγραφή SQL Server

Κοινή χρήση τώρα:

Εάν δεν καταφέρατε να εισαγάγετε μια νέα εγγραφή σε έναν πίνακα λόγω του μοναδικού περιορισμού, μην παραλείψετε να διαβάσετε αυτό το άρθρο. Θα σας βοηθήσει να λύσετε αυτό το πρόβλημα.

Σε αυτό το άρθρο, θα εισαγάγουμε 4 μεθόδους για την επίλυση του προβλήματος όταν αποτυγχάνετε να εισαγάγετε μια νέα εγγραφή επειδή παραβιάζει τον μοναδικό περιορισμό του πίνακα στο SQL Server.

Μια πραγματική υπόθεση:

Ας δούμε τώρα μια πραγματική υπόθεση. Έχουμε μια βάση δεδομένων που ονομάζεται "Προϊόν" και υπάρχει ένας πίνακας που ονομάζεται "DataNumenΠροϊόν» στη βάση δεδομένων. Υπάρχουν δύο πεδία στον πίνακα, π.χ. "ProductId" και "ProductName", με τύπους δεδομένων "int" και "varchar" αντίστοιχα. Και το "ProductId" είναι ένα πρωτεύον κλειδί με μοναδικό περιορισμό.

Αυτήν τη στιγμή υπάρχουν ορισμένες εγγραφές στον πίνακα, όπως παρακάτω:Εγγραφές στον πίνακα "DataNumenΠροϊόν"

Εικόνα 1 Εγγραφές στον Πίνακα "DataNumenΠροϊόν"

Υποθέτοντας ότι υπάρχουν δύο DBA για τη βάση δεδομένων, δηλαδή, ο Jim και ο Tom. Μια μέρα, ο Jim διέγραψε την πρώτη εγγραφή στον πίνακα, όπως παρακάτω:

DELETE FROM DataNumenProduct
WHERE ProductId=1;

Τη δεύτερη μέρα, ο Τομ εισήγαγε μια νέα εγγραφή στον πίνακα, η οποία έχει το ίδιο πρωτεύον κλειδί με τη διαγραμμένη εγγραφή, όπως παρακάτω:

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

Ο πίνακάς μας λοιπόν έχει τις ακόλουθες εγγραφές, όπως παρακάτω:

Ενημερωμένα αρχεία στον πίνακα "DataNumenΠροϊόντα"

Εικόνα 2 Ενημερωμένα αρχεία στον πίνακα "DataNumenΠροϊόντα"

Τώρα, εάν ο Jim θέλει να επαναφέρει τη διαγραμμένη εγγραφή πίσω στον πίνακα, θα παραβιάσει τον μοναδικό περιορισμό του πρωτεύοντος κλειδιού "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 Management Studio:

  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 εργαλεία ανάκτησης δεδομένων.

Εισαγωγή συγγραφέα:

Ο Jim Hu είναι ειδικός στην ανάκτηση δεδομένων DataNumen, Inc., η οποία είναι ο παγκόσμιος ηγέτης στις τεχνολογίες ανάκτησης δεδομένων, συμπεριλαμβανομένων Επισκευή πρόσβασης και dbf επισκευή προϊόντων λογισμικού. Για περισσότερες πληροφορίες επισκεφθείτε www.datanumen.com

Κοινή χρήση τώρα:

Τα σχόλια είναι κλειστά.