4 Riešenia, keď vám jedinečné obmedzenie zabráni vložiť nový záznam do SQL Server

Zdieľať teraz:

Ak sa vám nepodarilo vložiť nový záznam do tabuľky z dôvodu jedinečného obmedzenia, nenechajte si ujsť prečítanie tohto článku. Pomôže vám to vyriešiť tento problém.

V tomto článku predstavíme 4 metódy riešenia problému, keď sa vám nepodarí vložiť nový záznam, pretože porušuje jedinečné obmedzenie tabuľky v SQL Server.

Skutočný prípad:

Teraz sa pozrime na skutočný prípad. Máme databázu s názvom „Produkt“ a existuje tabuľka s názvom „Produkt“.DataNumenProduktu “v databáze. V tabuľke sú dve polia, tj. „ProductId“ a „ProductName“ s dátovými typmi „int“ a „varchar“. A „ProductId“ je primárny kľúč s jedinečným obmedzením.

V súčasnej dobe sú v tabuľke niektoré záznamy, ako je uvedené nižšie:Záznamy v tabuľke “DataNumenProdukt “

Obrázok 1 Záznamy v tabuľke “DataNumenProdukt “

Za predpokladu, že pre databázu existujú dva DBA, tj. Jim a Tom. Jedného dňa Jim odstránil prvý záznam z tabuľky, ako je uvedené nižšie:

DELETE FROM DataNumenProduct
WHERE ProductId=1;

Na druhý deň Tom vložil do tabuľky nový záznam, ktorý má rovnaký primárny kľúč ako odstránený záznam, ako je uvedené nižšie:

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

Takže naša tabuľka obsahuje nasledujúce záznamy, ako je uvedené nižšie:

Aktualizované záznamy v tabuľke “DataNumenProdukty"

Obrázok 2 Aktualizované záznamy v tabuľke “DataNumenProdukty"

Ak teraz chce Jim obnoviť odstránený záznam späť do tabuľky, dôjde k porušeniu jedinečného obmedzenia primárneho kľúča „ProductId“. V takom prípade môžeme na vyriešenie problému použiť jedno z riešení uvedených nižšie.

Riešenie 1: Upravte primárny kľúč nového záznamu, aby ste predišli konfliktom

Primárny kľúč záznamu, ktorý sa má vložiť, môžeme upraviť na novú hodnotu, ktorá sa líši od hodnoty všetkých existujúcich záznamov v tabuľke. Vezmime si vyššie uvedený príklad ako príklad, pre vloženie záznamu môžeme upraviť hodnotu primárneho kľúča od 1 do 5. Potom môžeme obnoviť nový vygenerovaný záznam späť do tabuľky, ako je uvedené nižšie:

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

Nižšie sú uvedené konečné záznamy v tabuľke:Konečné záznamy v tabuľke “DataNumen Produkty"

Obrázok 3 Konečné záznamy v tabuľke “DataNumen Produkty"

Alternatívne riešenie 2: Upravte primárny kľúč existujúceho záznamu, aby ste predišli konfliktom

  1. Najprv musíme aktualizovať hodnotu primárneho kľúča existujúceho záznamu, ktorý môže spôsobiť konflikt, ako je uvedené nižšie:
UPDATE DataNumenProduct
SET ProductId = 6
WHERE ProductId = 1;

Nižšie sú aktualizované záznamy v tabuľke:

Aktualizované záznamy v tabuľke “DataNumen Produkty"

Obrázok 4 Aktualizované záznamy v tabuľke “DataNumen Produkty"

  1. Potom môžeme obnoviť odstránený záznam späť do tabuľky, ako je uvedené nižšie:
INSERT INTO DataNumenProduct
VALUES(1, 'DataNumen Access Repair ');

Teraz sa pozrime na konečnú verziu, ako je uvedené nižšie:

Konečné záznamy v tabuľke “DataNumen Produkty"

Obrázok 5 Konečné záznamy v tabuľke “DataNumen Produkty"

Riešenie 3: Dočasné vypnutie jedinečného obmedzenia pomocou SQL

  1. Na vyriešenie problému môžeme dočasne odstrániť obmedzenie primárneho kľúča „pk“ v tabuľke, ako je uvedené nižšie:
ALTER TABLE DataNumenProduct
DROP CONSTRAINT pk;
  1. Potom môžeme pridať odstránený záznam späť do tabuľky, ako je uvedené nižšie:
INSERT INTO DataNumenProduct
VALUES(1, 'DataNumen Access Repair');

Teraz sa pozrime na záznamy v tabuľke:

Aktualizované záznamy v tabuľke “DataNumen Produkty"

Obrázok 6 Aktualizované záznamy v tabuľke “DataNumen Produkty"

  1. Pretože dva záznamy majú rovnaké hodnoty primárneho kľúča, musíme jeden z nich upraviť, aby nedochádzalo ku konfliktom, ako je uvedené nižšie:
UPDATE DataNumenProduct SET ProductId = 5
WHERE ProductName = 'DataNumen Outlook Repair';
  1. Nakoniec do tabuľky pridáme obmedzenie primárneho kľúča „pk“, ako je uvedené nižšie:
ALTER TABLE DataNumenProduct
ADD CONSTRAINT pk PRIMARY KEY(ProductId);

Teraz sú v tabuľke niektoré záznamy, ako je uvedené nižšie:

Aktualizovaný obsah v tabuľke “DataNumen Produkty"

Obrázok 7 Aktualizovaný obsah v tabuľke “DataNumen Produkty"

Riešenie 4: Dočasne zakážte jedinečné obmedzenie pomocou SQL Server Štúdio správy:

  1. Na prvom mieste odstránime obmedzenie primárneho kľúča „pk“ v tabuľke pomocou grafického používateľského rozhrania, ako je uvedené nižšie:

Odstráňte obmedzenie primárneho kľúča „pk“ pomocou grafického používateľského rozhrania

Obrázok 8 Odstráňte obmedzenie primárneho kľúča „pk“ pomocou grafického používateľského rozhrania

  1. Potom vložíme odstránený záznam v reálnom prípade do tabuľky, ako je uvedené nižšie.
INSERT INTO DataNumenProduct
VALUES(1, 'DataNumen Access Repair');

Teraz sú v tabuľke niektoré záznamy, ako je uvedené nižšie:

Aktualizovaný obsah v tabuľke “DataNumen Produkty"

Obrázok 9 Aktualizovaný obsah v tabuľke “DataNumen Produkty"

  1. Potom upravíme hodnotu primárneho kľúča existujúceho záznamu v tabuľke, ako je uvedené nižšie:
UPDATE DataNumenProduct
SET ProductId = 5
WHERE ProductName = 'DataNumen Outlook Repair';
  1. Na záver do tabuľky pomocou obmedzenia grafického používateľského rozhrania pridáme obmedzenie primárneho kľúča „pk“, ako je uvedené nižšie:Pridajte späť obmedzenie primárneho kľúča „pk“ pomocou GUI

Obrázok 8 Pridajte späť obmedzenie primárneho kľúča „pk“ pomocou GUI

Vyriešiť SQL Server Poškodenie databázy

Iné ako jedinečné obmedzenia, SQL Server korupcie je tiež veľmi častým problémom obťažujúcim DBA. Normálne môžeme použiť SQL Server zabudované príkazy na riešenie korupcie. Ak však nepracujú, môžeme sa uchýliť k nejakej tretej strane SQL Server nástroje na obnovu dát.

Úvod autora:

Jim Hu je expert na obnovu dát v DataNumen, Inc., ktorá je svetovým lídrom v oblasti technológií obnovy dát, vrátane Prístup k oprave a dbf oprava softvérových produktov. Pre viac informácií navštívte www.datanumen. S

Zdieľať teraz:

Komentáre sú uzavreté.