Sprievodcovia

Ako opraviť chybu „Nemôžem vložiť explicitnú hodnotu pre stĺpec identity do tabuľky, keď je IDENTITY_INSERT nastavený na OFF“?

Stĺpec primárneho kľúča je často nastavený na automatický prírastok pri konštrukcii databázy servera SQL Server. Pre stĺpec primárneho kľúča je nastavený limit IDENTITY. Počiatočné umiestnenie a krok prírastku sa prenesú do stĺpca IDENTITY ako parametre. Potom vždy, keď je pridaný nový záznam a vložka identity je nastavená na OFF, hodnota stĺpca IDENTITY sa zvýši o vopred definovaný krok, obvykle o číslo. Vlastnosť IDENTITY INSERT je navyše nastavená na ZAPNUTÉ iba pre jednu tabuľku v jednej relácii.

V tomto článku si rozoberieme chybu „Nie je možné vložiť explicitnú hodnotu pre stĺpec identity do tabuľky

keď je IDENTITY_INSERT nastavený na OFF “
ako je uvedené nižšie.

Chyba nastáva, keď používateľ nastavil „identity_insert“ na „OFF“. Potom sa pokúsi explicitne vložiť údaje do stĺpca primárneho kľúča tabuľky. To možno vysvetliť na príklade uvedenom nižšie.

Vytvorenie databázy a tabuľky:

Najskôr vytvorte databázu s názvom „appuals“.

Pomocou nasledujúceho kódu vytvorte tabuľku s názvom „osoba“. Postavený stôl pomocou a „PRIMÁRNA KLÍČOVÁ IDENTITA“

CREATE TABLE osoba (ID INT IDENTITA (1, 1), meno_VARCHAR (MAX), priezvisko VARCHAR (MAX))

Syntax pre nastavenie „identity_ vloženie vypnuté | na ”:

The „Vypnúť vloženie identity_ | na ” pomôže nám vyriešiť túto chybu. Správna syntax pre tento príkaz je uvedená nižšie.

NASTAVIŤ IDENTITY_INSERT. .   ZAP 

Zatiaľ čo prvým argumentom je názov databázy, v ktorej sa nachádza tabuľka. Druhým argumentom je schéma, do ktorej patrí táto tabuľka, ktorej hodnota identity musí byť nastavená ZAP alebo VYPNUTÝ. O treťom argumente

je tabuľka so stĺpcom identity.

V zásade existujú dva rôzne spôsoby bezchybného vkladania údajov do tabuľky. Považujú sa za riešenie tejto chyby a sú diskutované nižšie.

Chyba 1: Nastavte identity_insert na VYPNUTÉ

V prvom prípade vložíme údaje do tabuľky s „IDENTITY INSERT“ nastavený na „VYPNUTÉ“. Takže ak je ID prítomné vo vyhlásení INSERT, zobrazí sa chyba „Nie je možné vložiť explicitnú hodnotu pre stĺpec identity do tabuľky„ osoba “, keď je položka IDENTITY_INSERT nastavená na hodnotu VYPNUTÉ.

Na karte dotazu vykonajte nasledujúci kód.

 vypnúť osobu s vložením identity; vložte do osoby (ID, meno, priezvisko, priezvisko) hodnoty (3, 'Sadia', 'Majeed'), (4, 'Michel', 'Ronald')

Výstup bude taký.

Riešenie:

Pri otáčaní „IDENTITY INSERT OFF“,„ID PRIMÁRNEHO KĽÚČA“ NEMUSÍ BYŤ PRÍTOMNÝ vo vyhlásení o vložení

Teraz na karte dotazu vykonajte nasledujúci kód

 vypnúť osobu s identitou; vložte do osoby (meno, priezvisko) hodnoty ('Sadia', 'Majeed'), ('Michel', 'Ronald')

Takto vložíte údaje do tabuľky bez chyby. Užívateľ navyše nemusí vložiť ID PRIMÁRNEHO KĽÚČA, skôr automaticky pridá jedinečnú hodnotu ID, ako je vidieť na obrázku nižšie.

Chyba 2: Zapnite nastavenie identity_insert

V druhom prípade vložíme údaje do tabuľky s „IDENTITY INSERT“ nastavený na „ZAP.“. Pokiaľ sa teda ID vo výroku INSERT nenachádza, zobrazí sa chyba „Správa 545, úroveň 16, štát 1, riadok 17. Pre stĺpec identity v tabuľke„ osoba “musí byť uvedená explicitná hodnota, keď je položka IDENTITY_INSERT nastavená na hodnotu ZAPNUTÉ alebo keď používateľ replikácie vkladá do stĺpca identity NIE NA REPLIKÁCIU.“.

Riešenie:

Pri otáčaní„IDENTITY INSERT ON“ the "PRIMÁRNY KĽÚČ ID “ musí byť prítomný vo vyhlásení o vložení.

Na karte dotazu vykonajte nasledujúci kód

 nastaviť osobu na vloženie identity; vložte do osoby (ID, meno, priezvisko, priezvisko) hodnoty (5, 'Jack', 'black'), (6, 'john', 'Wicky')

Takto vložíte údaje do tabuľky bez chyby. Takto ID PRIMÁRNEHO KĽÚČA je výslovne požadované vložením používateľom. Rovnako tak nepridá automaticky jedinečnú hodnotu ID, ako je to znázornené na obrázku nižšie.

Ak ty "NASTAVIŤ VLOŽENIE IDENTITY ZAPNUTÉ “, zostane zapnuté počas celej relácie. Takto môžete pridať toľko záznamov, koľko chcete. Týka sa to tiež iba relácie, kde je povolená. Takže ak otvoríte inú kartu dotazu, musíte ju otočiť ZAP znova pre dané okno s dotazom.

Copyright sk.absolutsilverpoint.com 2024

$config[zx-auto] not found$config[zx-overlay] not found