Hoe de fout te verhelpen ‘Kan geen expliciete waarde voor identiteitskolom in tabel invoegen als IDENTITY_INSERT is ingesteld op UIT’?

De primaire sleutelkolom wordt vaak ingesteld op automatisch verhogen bij het samenstellen van een SQL Server-database. Hiervoor is de IDENTITY-limiet ingesteld voor de primaire sleutelkolom. De startlocatie en stap van verhoging worden als parameters overgebracht naar de IDENTITY-kolom. Telkens wanneer een nieuw record wordt toegevoegd en de identiteitsinvoeging is ingesteld op UIT, wordt de waarde van de IDENTITEIT-kolom verhoogd met de vooraf gedefinieerde stap, normaal gesproken een getal. Bovendien wordt de eigenschap IDENTITY INSERT slechts voor één tafel in één sessie op ON gezet.

In dit artikel bespreken we de fout “Kan geen expliciete waarde invoegen voor identiteitskolom in tabel

wanneer IDENTITY_INSERT is ingesteld op OFF "
zoals hieronder weergegeven.

De fout treedt op wanneer de gebruiker "identity_insert" op "OFF" heeft gezet. Probeert vervolgens expliciet gegevens in de primaire sleutelkolom van de tabel in te voegen. Dit kan worden uitgelegd aan de hand van het onderstaande voorbeeld.

Database- en tabelcreatie:

Maak eerst een database met de naam "appuals".

Maak een tabel met de naam "person" met behulp van de volgende code. Gebouwde tafel met behulp van een "PRIMAIRE SLEUTEL-IDENTITEIT"

CREATE TABLE persoon (ID INT IDENTITY (1, 1), voornaam VARCHAR (MAX), achternaam VARCHAR (MAX))

Syntaxis voor het instellen van "identity_insert off | Aan":

De “Set identity_insert off | Aan" helpt ons deze fout op te lossen. De juiste syntaxis voor deze verklaring is zoals hieronder.

SET IDENTITY_INSERT  . .  {UIT | AAN }

Terwijl het eerste argument is de naam van de database waarin de tabel zich bevindt. Het tweede argument: shows is het schema waartoe die tabel behoort, waarvan de identiteitswaarde moet worden ingesteld AAN of UIT. Het derde argument

is de tabel met de identiteitskolom.

Er zijn fundamenteel twee verschillende manieren om gegevens foutloos in de tabel in te voeren. Deze worden beschouwd als de oplossing voor deze fout en worden hieronder besproken.

Fout 1: Zet identity_insert UIT

In het eerste geval zullen we gegevens in de tabel invoegen met de "IDENTITY INSERT" ingesteld op "UIT". Dus als de ID aanwezig is in de INSERT-instructie, krijgt u de foutmelding "Kan geen expliciete waarde invoegen voor identiteitskolom in tabel‘ person ’wanneer IDENTITY_INSERT is ingesteld op UIT".

Voer de volgende code uit op het tabblad Query.

 zet identity_insert person uit; invoegen in persoon (ID, voornaam, achternaam) waarden (3, 'Sadia', 'Majeed'), (4, 'Michel', 'Ronald')

De output zal als volgt zijn.

Oplossing:

Bij het draaien van de "IDENTITY INSERT OFF", de"PRIMAIRE SLEUTEL-ID" MOGEN NIET AANWEZIG zijn in de invoeginstructie

Voer nu de volgende code uit in het query-tabblad:

 zet identity_insert person uit; invoegen in persoon (voornaam, achternaam) waarden ('Sadia', 'Majeed'), ('Michel', 'Ronald')

Hierdoor worden gegevens zonder fouten in de tabel ingevoegd. Bovendien hoeft de PRIMAIRE SLEUTEL-ID niet door de gebruiker te worden ingevoerd, maar wordt automatisch een unieke ID-waarde toegevoegd, zoals te zien is in de onderstaande afbeelding.

Fout 2: Zet identity_insert AAN

In het tweede geval zullen we gegevens in de tabel invoegen met de “IDENTITEIT INVOEGEN” ingesteld op "AAN". Dus als de ID niet aanwezig is in de INSERT-instructie, krijgt u de foutmelding "Msg 545, niveau 16, staat 1, regel 17. De expliciete waarde moet worden opgegeven voor de identiteitskolom in tabel‘ person ’wanneer IDENTITY_INSERT is ingesteld op AAN of wanneer een replicatiegebruiker invoegt in een NOT FOR REPLICATION identiteitskolom".

Oplossing:

Bij het draaien van de"IDENTITY INSERT ON" de "HOOFDSLEUTEL ID KAART" moet aanwezig zijn in de invoeginstructie.

Voer de volgende code uit op het tabblad Query

 stel identiteit in_persoon in; invoegen in persoon (ID, voornaam, achternaam) waarden (5, 'Jack', 'zwart'), (6, 'john', 'Wicky')

Hierdoor worden gegevens zonder fouten in de tabel ingevoegd. Dus The PRIMAIRE SLEUTEL-ID moet expliciet door de gebruiker worden ingevoegd. Het zal ook niet automatisch een unieke ID-waarde toevoegen, zoals te zien is in de onderstaande afbeelding.

Als jij "ZET IDENTITEIT INSERT AAN ', blijft het de hele sessie aan. U kunt dus zoveel records toevoegen als u wilt als dit eenmaal is ingesteld. Dit verwijst ook alleen naar de sessie waarin het is ingeschakeld. Dus als u een ander query-tabblad opent, moet u dit omdraaien AAN opnieuw voor dat queryvenster.

Facebook Twitter Google Plus Pinterest