Průvodci

Jak opravit chybu „Nelze vložit explicitní hodnotu pro sloupec identity do tabulky, když je IDENTITY_INSERT nastaven na OFF“?

Sloupec primárního klíče je často nastaven na automatický přírůstek při konstrukci databáze serveru SQL Server. K tomu je pro sloupec primárního klíče nastaven limit IDENTITY. Počáteční umístění a krok přírůstku se přenesou do sloupce IDENTITY jako parametry. Potom, kdykoli je přidán nový záznam a vložka identity je nastavena na OFF, hodnota sloupce IDENTITY se zvýší o předem definovaný krok, obvykle o číslo. Vlastnost IDENTITY INSERT je navíc nastavena na ON pouze pro jednu tabulku v jedné relaci.

V tomto článku probereme chybu „Nelze vložit explicitní hodnotu pro sloupec identity v tabulce

když je IDENTITY_INSERT nastaveno na VYPNUTO “
Jak je ukázáno níže.

Chyba nastane, když uživatel nastavil „identity_insert“ na „OFF“. Pak se pokusí explicitně vložit data do sloupce primárního klíče tabulky. To lze vysvětlit pomocí níže uvedeného příkladu.

Vytvoření databáze a tabulky:

Nejprve vytvořte databázi s názvem „appuals“.

Vytvořte tabulku s názvem „osoba“ pomocí následujícího kódu. Postavený stůl pomocí a „PRIMÁRNÍ KLÍČOVÁ IDENTITA“

CREATE TABLE person (ID INT IDENTITY (1, 1), first_name VARCHAR (MAX), last_name VARCHAR (MAX))

Syntaxe pro nastavení „identity_insert off | na":

The „Vypnout vložení identity | | na" pomůže nám tuto chybu vyřešit. Správná syntaxe tohoto příkazu je uvedena níže.

NASTAVTE IDENTITY_INSERT. .   NA 

Zatímco první argument je název databáze, ve které je tabulka umístěna. Druhým argumentem je schéma, do kterého tato tabulka patří, jejíž hodnota identity musí být nastavena NA nebo VYPNUTO. Třetí argument

je tabulka se sloupcem identity.

Existují zásadně dva různé způsoby vkládání dat do tabulky bez chyby. Ty jsou považovány za řešení této chyby a jsou popsány níže.

Chyba 1: Nastavte identity_insert VYPNUTO

V prvním případě vložíme data do tabulky s „IDENTITY INSERT“ nastaven na "VYPNUTO". Pokud je tedy ID v příkazu INSERT, zobrazí se chyba „Nelze vložit explicitní hodnotu pro sloupec identity do tabulky„ osoba “, když je IDENTITY_INSERT nastaveno na VYPNUTO.“

Na kartě dotazu proveďte následující kód.

 vypnout osobu identity_insert; vložit do osob (ID, křestní jméno, příjmení) hodnoty (3, 'Sadia', 'Majeed'), (4, 'Michel', 'Ronald')

Výstup bude takový.

Řešení:

Při otáčení „IDENTITY INSERT OFF“„ID PRIMÁRNÍHO KLÍČE“ NESMÍ BÝT PŘÍTOMNÝ ve výpisu insert

Nyní proveďte následující kód na kartě dotazu

 vypnout osobu identity_insert; vložit do osob (křestní jméno, příjmení) hodnoty ('Sadia', 'Majeed'), ('Michel', 'Ronald')

Tím vložíte data do tabulky bez chyby. Uživatel navíc nemusí vkládat ID PRIMÁRNÍHO KLÍČE, spíše automaticky přidá jedinečnou hodnotu ID, jak je vidět na obrázku níže.

Chyba 2: Nastavte identity_insert ZAPNUTO

V druhém případě vložíme data do tabulky s „IDENTITY INSERT“ nastaven na "NA". Pokud tedy ID není k dispozici v příkazu INSERT, zobrazí se chyba „Zpráva 545, úroveň 16, stav 1, řádek 17. Pro sloupec identity v tabulce„ osoba “musí být uvedena explicitní hodnota, buď když je IDENTITY_INSERT nastaveno na ZAPNUTO, nebo když uživatel replikace vkládá do sloupce identity NE PRO REPLIKACI“.

Řešení:

Při otáčení„IDENTITY INSERT ON“ the "PRIMÁRNÍ KLÍČ ID “ musí být ve výpisu insert.

Na kartě dotazu proveďte následující kód

 nastavit osobu identity_vložit; vložit do osob (ID, křestní jméno, příjmení) hodnoty (5, „Jack“, „černá“), (6, „john“, „Wicky“)

Tím vložíte data do tabulky bez chyby. Tak ID PRIMÁRNÍHO KLÍČE je výslovně vyžadováno vložením uživatelem. Také automaticky nepřidá jedinečnou hodnotu ID, jak je vidět na obrázku níže.

Jestli ty "NASTAVIT VLOŽENÍ IDENTITY ZAPNUTO “, zůstane zapnuto po celou dobu relace. Po nastavení tedy můžete přidat tolik záznamů, kolik chcete. To také odkazuje pouze na relaci, kde je povolena. Pokud tedy otevřete další kartu dotazu, musíte ji otočit NA znovu pro toto okno dotazu.

Copyright cs.absolutsilverpoint.com 2022