Hur åtgärdar du felet ”Kan inte infoga ett uttryckligt värde för identitetskolumnen i tabellen när IDENTITY_INSERT är inställt på OFF”?
Den primära nyckelkolumnen är ofta inställd på att automatiskt öka när du skapar en SQL Server-databas. IDENTITET-gränsen är aktiverad för att den primära nyckelkolumnen ska göra detta. Startplatsen och steget för steg ökas till IDENTITY-kolumnen som parametrar. När en ny post läggs till och identitetsinsatsen är inställd på OFF, ökas värdet för kolumnen IDENTITY med det fördefinierade steget, normalt ett tal. Dessutom är egenskapen IDENTITY INSERT inställd på ON endast för en tabell i en enda session.
I den här artikeln kommer vi att diskutera felet ”Det går inte att infoga ett uttryckligt värde för identitetskolumnen i tabellen
när IDENTITY_INSERT är inställt på OFF ”Felet uppstår när användaren har ställt in “identity_insert” till “OFF”. Försöker sedan infoga data i den primära nyckelkolumnen i tabellen uttryckligen. Detta kan förklaras med hjälp av exemplet nedan.
Skapa databas och tabell:
Skapa först en databas med namnet "appuals".
Skapa en tabell med namnet "person" med följande kod. Byggt bord med en “PRIMÄR NYCKELIDENTITET”
SKAPA TABELLperson (ID INT IDENTITET (1, 1), förnamn VARCHAR (MAX), efternamn VARCHAR (MAX))
Syntax för att ställa in ”identity_insert off | på":
De “Stäng av identitetsinsättning | på" hjälper oss att lösa detta fel. Den korrekta syntaxen för detta uttalande är som nedan.
STÄLL IN IDENTITY_INSERT. . {AV | PÅ}
Medan det första argumentet
Det finns i grunden två olika sätt att infoga data i tabellen utan fel. Dessa betraktas som lösningen på detta fel och diskuteras nedan.
Fel 1: Ställ in identitetsinsättning AV
I det första fallet infogar vi data i tabellen med “IDENTITY INSERT” satt till "AV". Så om ID: n finns i INSERT-uttalandet får du felet ”Det går inte att infoga ett uttryckligt värde för identitetskolumnen i tabellen” person ”när IDENTITY_INSERT är inställt på AV.
Kör följande kod på frågestappen.
stäng av identitet_inför person; infoga värden för person (ID, förnamn, efternamn) (3, 'Sadia', 'Majeed'), (4, 'Michel', 'Ronald')
Resultatet blir så här.
Lösning:
När du vrider på “IDENTITY INSERT OFF”, den“PRIMÄRT NYCKEL-ID” FÅR INTE FINNAS i infogningsuttalandet
Kör nu följande kod i frågefliken
ställa in identitet_inför person; infoga värden för person (förnamn, efternamn) ('Sadia', 'Majeed'), ('Michel', 'Ronald')
Detta infogar data i tabellen utan ett fel. Dessutom krävs inte att PRIMÄRT NYCKEL-ID infogas av användaren, utan det kommer automatiskt att lägga till unikt ID-värde, vilket framgår av figuren nedan.
Fel 2: Ange identitetsinsättning PÅ
I det andra fallet infogar vi data i tabellen med “IDENTITY INSERT” satt till "PÅ". Så om ID: t inte finns i INSERT-uttalandet får du felet ”Msg 545, nivå 16, tillstånd 1, rad 17. Det uttryckliga värdet måste anges för identitetskolumnen i tabellen” person ”antingen när IDENTITY_INSERT är inställt på ON eller när en replikeringsanvändare infogar i en INTE FÖR REPLIKATION identitetskolumn”.
Lösning:
När du vrider på“IDENTITY INSERT ON” de "PRIMÄRNYCKEL ID ” måste finnas i infogningsuttalandet.
Kör följande kod på frågestappen
ställa in identitet_inför person på; infoga i personvärden (ID, förnamn, efternamn) (5, 'Jack', 'svart'), (6, 'john', 'Wicky')
Detta infogar data i tabellen utan ett fel. Således PRIMÄRT NYCKEL-ID måste uttryckligen infogas av användaren. Det kommer inte heller att lägga till unikt ID-värde automatiskt, vilket framgår av figuren nedan.
Om du "STÄLL IN IDENTITY INSERT ON ”kommer den att vara på under hela sessionen. Således kan du lägga till så många poster du vill när detta har ställts in. Detta hänvisar också endast till sessionen där den är aktiverad. Så om du öppnar en annan frågeflik måste du vrida den PÅ igen för det frågefönstret.