Kung nabigo kang magpasok ng bagong tala sa isang talahanayan dahil sa kakaibang pagpilit, huwag palampasin na basahin ang artikulong ito. Makakatulong ito sa iyo upang malutas ang problemang ito.
Sa artikulong ito, ipapakilala namin ang 4 na paraan upang malutas ang problema kapag nabigo kang magpasok ng bagong tala dahil nilalabag nito ang natatanging pagpilit ng talahanayan sa SQL Server.
Isang Tunay na Kaso:
Ngayon tingnan natin ang isang tunay na kaso. Mayroon kaming database na pinangalanang "Produkto" at mayroong isang talahanayan na tinatawag na "DataNumenProdukto” sa database. Mayroong dalawang field sa talahanayan, ibig sabihin, "ProductId" at "ProductName", na may mga uri ng data na "int" at "varchar" ayon sa pagkakabanggit. At ang "ProductId" ay isang pangunahing key na may natatanging hadlang.
Sa kasalukuyan mayroong ilang mga tala sa talahanayan, tulad ng nasa ibaba:
Larawan 1 Mga Tala sa Talahanayan "DataNumenprodukto”
Ipagpalagay na mayroong dalawang DBA para sa database, ibig sabihin, sina Jim at Tom. Isang araw, tinanggal ni Jim ang unang tala sa talahanayan, tulad ng nasa ibaba:
DELETE FROM DataNumenProduct WHERE ProductId=1;
Sa ikalawang araw, nagpasok si Tom ng bagong tala sa talahanayan, na may parehong pangunahing key na may tinanggal na tala, tulad ng nasa ibaba:
INSERT INTO DataNumenProduct VALUES(1,'DataNumen OutLook Repair');
Kaya ang aming talahanayan ay may mga sumusunod na tala, tulad ng nasa ibaba:
Figure 2 Updated Records sa Table “DataNumenMga Produkto ”
Ngayon kung gusto ni Jim na ibalik ang tinanggal na record pabalik sa talahanayan, lalabag ito sa natatanging pagpilit ng pangunahing key na "ProductId." Sa ganoong sitwasyon, maaari naming gamitin ang isa sa mga solusyon sa ibaba upang malutas ang problema.
Workaround 1: Baguhin ang Pangunahing Susi ng Bagong Tala para maiwasan ang Conflict
Maaari naming baguhin ang pangunahing key ng record na ilalagay sa isang bagong halaga na iba sa lahat ng umiiral na mga tala sa talahanayan. Kunin ang kaso sa itaas bilang halimbawa, para maipasok ang tala, maaari naming baguhin ang pangunahing halaga ng key mula 1 hanggang 5. Pagkatapos ay maaari naming ibalik ang bagong nabuong tala pabalik sa talahanayan, tulad ng nasa ibaba:
INSERT INTO DataNumenProduct VALUES(5, 'DataNumen Access Repair');
Nasa ibaba ang mga huling tala sa talahanayan:
Larawan 3 Mga Pangwakas na Tala sa Talahanayan "DataNumen Mga Produkto ”
Workaround 2: Baguhin ang Pangunahing Susi ng Umiiral na Tala para maiwasan ang Salungatan
- Una, kailangan naming i-update ang pangunahing key value ng kasalukuyang record na maaaring magdulot ng salungatan, tulad ng nasa ibaba:
UPDATE DataNumenProduct SET ProductId = 6 WHERE ProductId = 1;
Nasa ibaba ang mga na-update na tala sa talahanayan:
Figure 4 Updated Records sa Table “DataNumen Mga Produkto ”
- Pagkatapos ay maaari naming ibalik ang tinanggal na tala pabalik sa talahanayan, tulad ng sa ibaba:
INSERT INTO DataNumenProduct VALUES(1, 'DataNumen Access Repair ');
Ngayon tingnan natin ang huling bersyon, tulad ng nasa ibaba:
Figure 5 Mga Pangwakas na Tala sa Talahanayan "DataNumen Mga Produkto ”
Solusyon 3: Pansamantalang Huwag Paganahin ang Natatanging Paghihigpit sa pamamagitan ng SQL
- Para malutas ang problema, maaari nating pansamantalang tanggalin ang primary key constraint na “pk” sa talahanayan, gaya ng nasa ibaba:
ALTER TABLE DataNumenProduct DROP CONSTRAINT pk;
- Pagkatapos ay maaari naming idagdag muli ang tinanggal na tala sa talahanayan, tulad ng sa ibaba:
INSERT INTO DataNumenProduct VALUES(1, 'DataNumen Access Repair');
Ngayon tingnan natin ang mga tala sa talahanayan:
Figure 6 Updated Records sa Table “DataNumen Mga Produkto ”
- Pagkatapos, dahil ang dalawang talaan ay may parehong pangunahing mga pangunahing halaga, kailangan naming baguhin ang isa sa mga ito upang maiwasan ang salungatan, tulad ng nasa ibaba:
UPDATE DataNumenProduct SET ProductId = 5 WHERE ProductName = 'DataNumen Outlook Repair';
- Sa wakas, idinaragdag namin muli ang pangunahing key na hadlang na "pk" sa talahanayan, tulad ng sa ibaba:
ALTER TABLE DataNumenProduct ADD CONSTRAINT pk PRIMARY KEY(ProductId);
Ngayon ay may ilang mga tala sa talahanayan, tulad ng sa ibaba:
Figure 7 Na-update na Nilalaman sa Talahanayan "DataNumen Mga Produkto ”
Solusyon 4: Pansamantalang Huwag Paganahin ang Natatanging Paghihigpit sa pamamagitan ng SQL Server Management Studio:
- Sa unang lugar, tatanggalin namin ang pangunahing key na hadlang na "pk" sa talahanayan sa pamamagitan ng GUI, tulad ng sa ibaba:
Figure 8 Tanggalin ang Primary Key Constraint "pk" sa pamamagitan ng GUI
- Pagkatapos ay ipinasok namin ang tinanggal na tala sa totoong kaso sa talahanayan, tulad ng sa ibaba.
INSERT INTO DataNumenProduct VALUES(1, 'DataNumen Access Repair');
Ngayon ay may ilang mga tala sa talahanayan, tulad ng sa ibaba:
Figure 9 Na-update na Nilalaman sa Talahanayan "DataNumen Mga Produkto ”
- Pagkatapos ay binabago namin ang pangunahing susi na halaga ng umiiral na tala sa talahanayan, tulad ng sa ibaba:
UPDATE DataNumenProduct SET ProductId = 5 WHERE ProductName = 'DataNumen Outlook Repair';
- Sa wakas, idinaragdag namin muli ang pangunahing key na hadlang na "pk" sa talahanayan sa pamamagitan ng GUI, tulad ng nasa ibaba:
Figure 8 Idagdag muli ang Pangunahing Key Constraint "pk" sa pamamagitan ng GUI
Malutas SQL Server Korapsyon sa Database
Maliban sa Natatanging mga hadlang, SQL Server katiwalian ay isa ring napakakaraniwang problema na nakakainis sa mga DBA. Karaniwang magagamit natin SQL Server built-in na mga utos upang malutas ang mga katiwalian. Gayunpaman, kung hindi sila gumana, maaari tayong gumamit ng ilang third-party SQL Server mga tool sa pagbawi ng data.
Panimula ng May-akda:
Si Jim Hu ay isang dalubhasa sa pagbawi ng data sa DataNumen, Inc., na pinuno ng mundo sa mga teknolohiya sa pagbawi ng data, kasama ang Pag-aayos ng access at dbf pagkumpuni ng mga produktong software. Para sa karagdagang impormasyon pagbisita www.datanumen. Sa








