Ratkaistu: identiteettilisäys on pois päältä

Viimeisin päivitys: 09/13/2023
Kirjoittaja: SQL SourceTrail

SQL-kehityksen maailmassa yksi usein kohdattu aihe on IDENTITY_INSERT-ominaisuus. Se on SQL Serverin asetus, jonka avulla käyttäjät voivat lisätä eksplisiittisiä arvoja taulukon tunnistesarakkeeseen. Oletusarvoisesti, kun luot identiteettisarakkeen taulukkoon, SQL Server luo sille automaattisesti peräkkäiset numeroarvot aina, kun uusi rivi lisätään. Saattaa kuitenkin olla tapauksia, joissa haluat lisätä tietyn arvon, ja tässä IDENTITY_INSERT tulee esiin. Tämä asetus voi kuitenkin aiheuttaa ongelmia, koska se on oletuksena käytössä. Tämän artikkelin tarkoituksena on auttaa sinua ymmärtämään tämän ongelman luonne ja kuinka voit ratkaista sen.

Identity_Insertin ratkaisu on asetettu pois päältä

Yleisesti ottaen ratkaisu IDENTITY_INSERT:n poiskytkennän ongelmaan on melko yksinkertainen – sinun on asetettava se PÄÄLLE kyseiselle taulukolle. Tämä voidaan tehdä seuraavalla SQL-komennolla:

SET IDENTITY_INSERT Your_Table_Name ON;

On kuitenkin huomattava, että voit käyttää tätä asetusta yhteen taulukkoon kerrallaan. Lisäksi, kun manuaalinen lisäystoiminto on päättynyt, saatat haluta poistaa tämän asetuksen käytöstä tällä komennolla:

SET IDENTITY_INSERT Your_Table_Name OFF;

Vaiheittainen koodin selitys

Vaikka ratkaisuprosessi on yksinkertainen, todellisten koodien ymmärtäminen on olennaista. SQL-aloittelijalle yllä olevat komennot voivat tuntua ahdistavilta. Kuitenkin, puretaan ne ja selvennetään, mitä kukin osa tarkoittaa.

Ensimmäinen käsky siinä on kolme avainsanaa – "SET", "IDENTITY_INSERT" ja "ON". "SET" on SQL-avainsana, jota käytetään määrittämään tietty arvo muuttujalle tai ominaisuudelle. "IDENTITY_INSERT" on ominaisuus, jota muutat, kun taas "ON" on asettamasi arvo.

Toinen käsky liian sisältää kolme avainsanaa, jotka ovat samanlaisia ​​kuin ensimmäinen komento, paitsi että annettu arvo on "OFF". Ajatuksena tässä on palauttaa kaikki normaaliksi, kun olet saavuttanut tavoitteesi lisätä tiettyjä tietoja identiteettisarakkeeseen.

Tähän ongelmaan liittyvät asiaankuuluvat kirjastot tai toiminnot

Ominaisuus IDENTITY_INSERT on osa T-SQL- (Transact-SQL) murretta, joka on Microsoftin SQL-kielen laajennus. T-SQL laajentaa standardi-SQL:ää lisäämällä useita ominaisuuksia, kuten prosessiohjelmoinnin ja paikallisten muuttujien tuen.

Lisäksi ne, jotka tulevat ORM-taustasta (Object-Relational Mapping), kuten Entity Framework, saatat kohdata tämän ongelman useammin. Vaikka nämä kehykset abstraktioivat pois monia tietokantakohtaisia ​​vivahteita, identiteetin lisäysongelmia voi silti ilmetä, varsinkin kun käsitellään siementietoja tai suoritetaan edistyneitä tietokantatoimintoja.

Samankaltaiset ongelmat ja niiden ratkaisut

IDENTITY_INSERT:iin liittyen saatat kohdata muita tilanteita, kuten päällekkäisiä identiteettiarvoja tai aukkoja identiteettiarvoissa. Myös nämä haasteet eivät ole epätavallisia, ja ne johtuvat usein tietueiden poistamisesta tai tapahtumien peruuttamisesta.

Tällaisten tapahtumien käsittelyyn SQL Server tarjoaa erilaisia ​​toimintoja ja komentoja. Esimerkiksi DBCC CHECKIDENTin avulla voit hallita tietyn taulukon nykyistä identiteettiarvoa. Todellisesta skenaariosta riippuen voit tarkistaa identiteettiarvon tai yksinkertaisesti korjata nykyisen identiteettiarvon tarpeen mukaan.

Vaikka SQL voi olla pelottavaa ensi silmäyksellä, ymmärryksen selkeys tekee tällaisten ongelmien ratkaisemisesta helpommin hallittavissa. Tärkeintä on ymmärtää näiden koodien takana oleva taika. Kuten sanotaan, harjoitus tekee mestarin. Ole sinnikäs erilaisten SQL-skenaarioiden kokeilemisessa ja ymmärtämisessä, niin hallitset varmasti SQL-ohjelmoinnin taidon.

Related viestiä: