Vejledninger

Sådan løses fejlen 'Kan ikke indsætte eksplicit værdi for identitetskolonnen i tabellen, når IDENTITY_INSERT er indstillet til FRA'?

Den primære nøglekolonne er ofte indstillet til automatisk stigning, når der konstrueres en SQL Server-database. IDENTITET-grænsen er sat til for den primære nøglekolonne for at gøre dette. Startplaceringen og trin for trin overføres til kolonnen IDENTITY som parametre. Så når der tilføjes en ny post, og identitetsindsatsen sættes til OFF, øges værdien af ​​kolonnen IDENTITY med det foruddefinerede trin, normalt et tal. Desuden er egenskaben IDENTITY INSERT kun sat til ON for en tabel i en enkelt session.

I denne artikel vil vi diskutere fejlen “Kan ikke indsætte eksplicit værdi for identitetskolonnen i tabellen

når IDENTITY_INSERT er indstillet til FRA ”
som vist nedenfor.

Fejlen opstår, når brugeren har indstillet “identity_insert” til “OFF”. Forsøger derefter at indsætte data eksplicit i den primære nøglekolonne i tabellen. Dette kan forklares ved hjælp af eksemplet nedenfor.

Oprettelse af database og tabel:

Opret først en database med navnet "appuals".

Opret en tabel med navnet “person” ved hjælp af følgende kode. Bygget bord ved hjælp af en “PRIMÆR NØGLEIDENTITET”

OPRET TABELperson (ID INT IDENTITET (1, 1), fornavn VARCHAR (MAX), efternavn VARCHAR (MAX))

Syntaks til indstilling af "identity_insert off | på":

Det “Sæt identitetsindsættelse fra | på" vil hjælpe os med at løse denne fejl. Den korrekte syntaks for denne erklæring er som nedenfor.

SÆT IDENTITY_INSERT. .   PÅ 

Mens det første argument er navnet på den database, hvor tabellen er placeret. Det andet argument viser er det skema, som tabellen hører til, hvis identitetsværdi skal indstilles til eller AF. Det tredje argument

er tabellen med identitetskolonnen.

Der er grundlæggende to forskellige måder at indsætte data i tabellen uden fejl. Disse betragtes som løsningen på denne fejl og diskuteres nedenfor.

Fejl 1: Sæt identitetsindsættelse FRA

I det første tilfælde indsætter vi data i tabellen med “IDENTITETSINDSÆT” indstillet til "AF". Så hvis ID'et er til stede i INSERT-sætningen, får du fejlen "Kan ikke indsætte eksplicit værdi for identitetskolonnen i tabellen" person ", når IDENTITY_INSERT er indstillet til FRA".

Udfør følgende kode i forespørgselsfanen.

 indstil identitet_indsæt person; indsæt værdier for person (ID, fornavn, efternavn) (3, 'Sadia', 'Majeed'), (4, 'Michel', 'Ronald')

Outputtet vil være sådan.

Opløsning:

Når du drejer “IDENTITY INSERT OFF”, det“PRIMÆRT NØGLE-ID” MÅ IKKE være til stede i indsætningserklæringen

Udfør nu følgende kode i forespørgselsfanen

 indstil identitet_indsæt person; indsæt personværdier (fornavn, efternavn) ('Sadia', 'Majeed'), ('Michel', 'Ronald')

Dette indsætter data i tabellen uden en fejl. Desuden kræves det, at PRIMÆRT NØGLE-ID ikke indsættes af brugeren, men det tilføjer automatisk en unik ID-værdi som vist i nedenstående figur.

Fejl 2: Indstil identity_insert ON

I det andet tilfælde indsætter vi data i tabellen med “IDENTITETSINDSÆT” indstillet til "PÅ". Så hvis ID'et ikke er til stede i INSERT-sætningen, får du fejlen ”Msg 545, niveau 16, tilstand 1, linje 17. Den eksplicitte værdi skal angives for identitetskolonnen i tabel 'person' enten når IDENTITY_INSERT er indstillet til ON, eller når en replikeringsbruger indsætter i en IKKE TIL REPLIKATION-identitetskolonne".

Opløsning:

Når du drejer“IDENTITY INSERT ON” det "PRIMÆRNØGLE ID ” skal være til stede i indsætningserklæringen.

Udfør følgende kode i forespørgselsfanen

 sæt person til identitetsindsættelse; indsæt værdier for person (ID, fornavn, efternavn) (5, 'Jack', 'sort'), (6, 'john', 'Wicky')

Dette indsætter data i tabellen uden en fejl. Således PRIMÆRT NØGLE-ID kræves udtrykkeligt indsat af brugeren. Det tilføjer heller ikke automatisk en unik ID-værdi som vist i nedenstående figur.

Hvis du "SET IDENTITY INSERT ON ”, vil den forblive tændt i hele sessionen. Således kan du tilføje så mange poster, som du vil, når dette er indstillet. Dette refererer også kun til den session, hvor den er aktiveret. Så hvis du åbner en anden forespørgselsfane, skal du dreje den igen for det forespørgselsvindue.

Copyright absolutsilverpoint.com 2021