Vodniki

Kako odpraviti napako »V tabeli ni mogoče vstaviti eksplicitne vrednosti za stolpec identitete, če je IDENTITY_INSERT nastavljen na OFF«?

Pri gradnji baze podatkov SQL Server je stolpec primarnega ključa pogosto nastavljen na samodejni prirastek. Omejitev IDENTITY je nastavljena za stolpec primarnega ključa, da to stori. Začetna lokacija in korak prirastka se kot parametra preneseta v stolpec IDENTITY. Nato se vsakič, ko se doda nov zapis in se vstavitev identitete nastavi na OFF, vrednost stolpca IDENTITY poveča za vnaprej določen korak, običajno število. Poleg tega je lastnost IDENTITY INSERT nastavljena na ON samo za eno tabelo v eni seji.

V tem članku bomo razpravljali o napaki „V tabelo ni mogoče vstaviti eksplicitne vrednosti za stolpec identitete

ko je IDENTITY_INSERT nastavljeno na OFF «
kot je prikazano spodaj.

Napaka nastane, ko je uporabnik za “identity_insert” nastavil na “OFF”. Nato poskuša izrecno vstaviti podatke v stolpec s primarnim ključem tabele. To je mogoče razložiti s spodnjim primerom.

Ustvarjanje baze podatkov in tabel:

Najprej ustvarite bazo podatkov z imenom "appuals".

Ustvarite tabelo z imenom "oseba" z uporabo naslednje kode. Izdelana miza z uporabo a “OSNOVNA KLJUČNA IDENTITETA”

USTVARI TABELO osebe (ID INT IDENTITY (1, 1), first_name VARCHAR (MAX), last_name VARCHAR (MAX))

Sintaksa za nastavitev “identity_insert off | vklopljeno:

The “Nastavite ident_insert off | na " nam bo pomagal odpraviti to napako. Pravilna sintaksa za ta stavek je naslednja.

NASTAVITE IDENTITY_INSERT. .   VKLOPLJENO 

Medtem ko je prvi argument ime baze podatkov, v kateri je tabela. Drugi argument prikazuje shemo, ki ji pripada ta tabela, katere vrednost identitete mora biti nastavljena VKLOPLJENO ali IZKLOPLJENO. Tretji argument

je tabela s stolpcem identitete.

V bistvu obstajata dva različna načina vstavljanja podatkov v tabelo brez napak. Ti se štejejo za rešitev te napake in so obravnavani v nadaljevanju.

Napaka 1: nastavite ident_insert OFF

V prvem primeru bomo podatke vstavili v tabelo z “VSTOP IDENTITETE” nastavljena »IZKLOPLJENO«. Torej, če je ID prisoten v stavku INSERT, boste dobili napako "Ne morem vstaviti eksplicitne vrednosti za stolpec identitete v tabeli" oseba ", če je IDENTITY_INSERT nastavljen na OFF".

Na zavihku poizvedbe izvedite naslednjo kodo.

 nastavite ident_insert osebo; vstavi vrednosti osebe (ID, ime, priimek) (3, 'Sadia', 'Majeed'), (4, 'Michel', 'Ronald')

Izhod bo takšen.

Rešitev:

Pri obračanju “IDENTITY INSERT OFF”,“OSNOVNA KLJUČNA ID” NE SME BITI PRISUTEN v stavku za vstavljanje

Zdaj izvedite naslednjo kodo na zavihku poizvedbe

 nastavite ident_insert osebo; vstavi v vrednosti osebe (ime_ime, priimek) ('Sadia', 'Majeed'), ('Michel', 'Ronald')

To bo podatke v tabelo vstavilo brez napake. Poleg tega uporabnika PRIMARNEGA KLJUČA ni treba vstaviti, temveč bo samodejno dodal enolično vrednost ID, kot je razvidno iz spodnje slike.

Napaka 2: Vključi ident_insert

V drugem primeru bomo podatke vstavili v tabelo z “VSTOP IDENTITETE” nastavljena »VKLOPLJENO«. Torej, če ID ni v stavku INSERT, boste dobili napako "Sporočilo 545, raven 16, stanje 1, vrstica 17. Izrecno vrednost je treba navesti za stolpec identitete v tabeli" oseba ", če je IDENTITY_INSERT nastavljen na VKLJUČEN ali ko uporabnik podvajanja vstavi v stolpec identitete NOT FOR REPLICATION".

Rešitev:

Pri obračanju»VSTOP IDENTITETE VKLOPLJEN« “PRIMARNI KLJUČ ID " mora biti prisoten v stavku insert.

Na zavihku poizvedbe izvedite naslednjo kodo

 nastavite ident_insert person on; vstavi v vrednosti osebe (ID, ime, priimek) (5, 'Jack', 'black'), (6, 'john', 'Wicky')

To bo podatke v tabelo vstavilo brez napake. Tako The ID OSNOVNEGA KLJUČA mora uporabnik izrecno vstaviti. Prav tako ne bo samodejno dodal edinstvene vrednosti ID, kot je razvidno iz spodnje slike.

Če ti "NASTAVI VSTAVITEV IDENTITETE «, bo ostal celo sejo. Tako lahko dodate toliko zapisov, kolikor želite, ko je to nastavljeno. To se nanaša tudi samo na sejo, kjer je omogočena. Torej, če odprete drug zavihek s poizvedbami, ga morate obrniti VKLOPLJENO spet za to okno poizvedbe.

Copyright sl.absolutsilverpoint.com 2024

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