Denne guiden vil lære deg hvordan du tilbakestiller en identitetskolonne i SQL Server, slik at du kan tilbakestille feilkonfigurerte verdier i en identitetskolonne.
SQL Server -identitet
For å legge til en identitetskolonne i en tabell i SQL Server, bruk identitetsspørsmålet. Syntaksen for identitetsspørsmålet i SQL Server er som vist:
Identitet (frø_value, inkrement_interval);Identitetsspørsmålet godtar to argumenter:
Som standard er frø- og økningsverdiene satt til 1. Derfor har den første posten i tabellen en verdi på 1, og hver post lagt til tabellen, lagt til av 1.
Tilbakestill identitetskolonne i SQL Server
La oss nå lære å tilbakestille en identitetskolonne i SQL Server, og hvorfor du kanskje trenger å gjøre det.
Begynn med å opprette en eksempeltabell og sette inn data som vist i spørsmålene nedenfor:
Lag tabellbeholdning (Vi kan nå spørre dataene som er lagret i tabellen som:
Velg * fra Inventory;De resulterende postene er som vist:
Legg merke til ID -kolonnen; Selv om vi ikke spesifiserte verdiene i innsatserklæringen vår, starter identitetsfunksjonen automatisk generasjoner verdien som starter på 1 og fortsetter å øke med en 1 for hver post vi setter inn.
Hvorfor tilbakestille identitetskolonnen?
Du kan spørre om identitetskolonnen inneholder automatisk genererte verdier i en spesifisert logisk rekkefølge, hvorfor må jeg tilbakestille identitetskolonnen?
Se på hva som skjer med dataene når vi sletter en post fra tabellen:
Slett fra varelager der mengde = 7;Ovennevnte eksempel bør fjerne en post der mengden er lik 7.
Bordet har nå postene som:
Velg * fra Inventory;I ID -kolonnene har vi verdiene som starter fra 1 til 6. Imidlertid mangler IDen til 4. Dette skjer når vi slipper en plate fra bordet.
For å fikse dette, må vi tilbakestille identitetskolonnen.
Hvordan tilbakestille identitetskolonnen
For å tilbakestille identitetskolonnen i SQL Server, bruker vi DBCC CheckInDent -prosedyren.
Syntaksen til prosedyren er som:
Dbcc checkident ('tabell_name', reseed, new_value);Imidlertid, hvis vi tilbakestiller identitetskolonnen og prøver å sette inn data, returnerer SQL Server en feil. For å løse dette:
Et eksempel på at jeg implementerer trinnene ovenfor er som vist:
Velg * til New_Inventory fra Inventory;Når spørsmålene er utført med hell, kan vi sjekke dataene i varelager -tabellen som:
Velg * fra Inventory;De resulterende tabellpostene er som vist:
Her er ID -kolonnen i riktig rekkefølge.
Lukking
Denne guiden dekker det grunnleggende om identitetsfunksjonen i SQL Server og hvordan du tilbakestiller en identitetskolonne i tilfelle feil.