Sekiranya anda gagal memasukkan rekod baru ke dalam jadual kerana kekangan yang unik, jangan ketinggalan untuk membaca artikel ini. Ia akan membantu anda menyelesaikan masalah ini.
Dalam artikel ini, kami akan memperkenalkan 4 kaedah untuk menyelesaikan masalah ketika Anda gagal memasukkan catatan baru kerana melanggar batasan unik tabel di SQL Server.
Kes Sebenar:
Sekarang mari kita lihat kes sebenar. Kami mempunyai pangkalan data bernama "Produk" dan ada tabel yang disebut "DataNumenProduk ”dalam pangkalan data. Terdapat dua bidang dalam tabel, yaitu, "ProductId" dan "ProductName", dengan masing-masing jenis data "int" dan "varchar". Dan "ProductId" adalah kunci utama dengan kekangan yang unik.
Pada masa ini terdapat beberapa catatan dalam jadual, seperti di bawah:
Rajah 1 Rekod dalam Jadual “DataNumenProduk "
Dengan andaian ada dua DBA untuk pangkalan data, iaitu, Jim dan Tom. Suatu hari, Jim menghapus catatan pertama dalam jadual, seperti di bawah:
DELETE FROM DataNumenProduct WHERE ProductId=1;
Pada hari kedua, Tom memasukkan rekod baru ke dalam jadual, yang mempunyai kunci utama yang sama dengan rekod yang dihapus, seperti di bawah:
INSERT INTO DataNumenProduct VALUES(1,'DataNumen OutLook Repair');
Oleh itu jadual kami mempunyai rekod berikut, seperti di bawah:
Rajah 2 Rekod yang Dikemas kini dalam Jadual “DataNumenProduk "
Sekarang jika Jim ingin mengembalikan rekod yang dihapus kembali ke meja, ia akan melanggar kekangan unik kunci utama "ProductId". Dalam kes seperti ini, kita dapat menggunakan salah satu kaedah penyelesaian di bawah untuk menyelesaikan masalah.
Penyelesaian 1: Ubah Kunci Utama Rekod Baru untuk Mencegah Konflik
Kita boleh mengubah kunci utama rekod untuk dimasukkan ke nilai baru yang berbeza dari semua rekod yang ada dalam jadual. Ambil contoh di atas sebagai contoh, agar catatan dimasukkan, kita dapat mengubah nilai kunci utama dari 1 hingga 5. Kemudian kita dapat mengembalikan rekod yang dihasilkan baru ke jadual, seperti di bawah:
INSERT INTO DataNumenProduct VALUES(5, 'DataNumen Access Repair');
Berikut adalah catatan akhir dalam jadual:
Gambar 3 Rekod Akhir dalam Jadual “DataNumen Produk "
Penyelesaian 2: Ubah Kunci Utama Rekod Yang Ada untuk Mencegah Konflik
- Pertama, kita perlu mengemas kini nilai kunci utama dari rekod yang ada yang boleh menyebabkan konflik, seperti di bawah:
UPDATE DataNumenProduct SET ProductId = 6 WHERE ProductId = 1;
Berikut adalah rekod yang dikemas kini dalam jadual:
Rajah 4 Rekod yang Dikemas kini dalam Jadual “DataNumen Produk "
- Kemudian kita dapat mengembalikan rekod yang dipadam kembali ke jadual, seperti di bawah:
INSERT INTO DataNumenProduct VALUES(1, 'DataNumen Access Repair ');
Sekarang mari kita lihat versi terakhir, seperti di bawah:
Gambar 5 Rekod Akhir dalam Jadual “DataNumen Produk "
Penyelesaian 3: Lumpuhkan Kekangan Unik Sementara melalui SQL
- Untuk menyelesaikan masalah ini, kita boleh memadam kekangan kunci utama "pk" dalam jadual buat sementara waktu, seperti di bawah:
ALTER TABLE DataNumenProduct DROP CONSTRAINT pk;
- Kemudian kita dapat menambahkan kembali catatan yang dihapus ke jadual, seperti di bawah:
INSERT INTO DataNumenProduct VALUES(1, 'DataNumen Access Repair');
Sekarang mari kita lihat rekod dalam jadual:
Rajah 6 Rekod yang Dikemas kini dalam Jadual “DataNumen Produk "
- Oleh kerana dua rekod mempunyai nilai kunci utama yang sama, kita perlu mengubahnya untuk mengelakkan konflik, seperti di bawah:
UPDATE DataNumenProduct SET ProductId = 5 WHERE ProductName = 'DataNumen Outlook Repair';
- Akhirnya, kami menambahkan kembali kekangan kunci utama "pk" ke jadual, seperti di bawah:
ALTER TABLE DataNumenProduct ADD CONSTRAINT pk PRIMARY KEY(ProductId);
Sekarang terdapat beberapa catatan dalam jadual, seperti di bawah:
Gambar 7 Kandungan yang Dikemas kini dalam JadualDataNumen Produk "
Penyelesaian 4: Lumpuhkan Kekangan Unik Sementara melalui SQL Server Studio Pengurusan:
- Di tempat pertama, kami menghapus kekangan kunci utama "pk" dalam jadual melalui GUI, seperti di bawah:
Gambar 8 Padam Kekangan Utama Utama "pk" melalui GUI
- Kemudian kami memasukkan rekod yang dihapus dalam kes sebenar dalam jadual, seperti di bawah.
INSERT INTO DataNumenProduct VALUES(1, 'DataNumen Access Repair');
Sekarang terdapat beberapa catatan dalam jadual, seperti di bawah:
Gambar 9 Kandungan yang Dikemas kini dalam Jadual “DataNumen Produk "
- Kemudian kami mengubah nilai utama utama rekod yang ada dalam jadual, seperti di bawah:
UPDATE DataNumenProduct SET ProductId = 5 WHERE ProductName = 'DataNumen Outlook Repair';
- Akhirnya, kami menambahkan kembali kekangan kunci utama "pk" ke jadual melalui GUI, seperti di bawah:
Gambar 8 Tambah Kembali Kekangan Utama Utama "pk" melalui GUI
Menyelesaikan SQL Server Rasuah Pangkalan Data
Selain daripada kekangan Unik, SQL Server rasuah juga merupakan masalah yang sangat biasa yang mengganggu DBA. Biasanya kita boleh menggunakan SQL Server arahan terbina dalam untuk menyelesaikan kerosakan. Namun, jika mereka tidak berjaya, maka kita boleh menggunakan beberapa pihak ketiga SQL Server alat pemulihan data.
Pengenalan Pengarang:
Jim Hu adalah pakar pemulihan data di DataNumen, Inc., yang merupakan pemimpin dunia dalam teknologi pemulihan data, termasuk Pembaikan akses dan dbf membaiki produk perisian. Untuk maklumat lebih lanjut, lawati www.datanumen.com








