Hvordan tilbakestille en sekvens i PostgreSQL

Hvordan Tilbakestille En Sekvens I Postgresql



Å bruke PostgreSQL-sekvensen er en effektiv måte å jobbe med en automatisk økningsverdi, spesielt for primærnøkler. Når startverdien ikke er definert, vil auto-inkrementet for INT begynne på 0. Du kan imidlertid spesifisere hvilken startverdi som skal brukes for sekvensen i auto-increment-kolonnen.

Dessuten, hvis du får en situasjon som krever at du endrer neste verdi i sekvensen, kan du raskt tilbakestille sekvensen og spesifisere hvilken verdi du skal starte med for neste oppføring i tabellen. Alle detaljene du bør vite om hvordan du tilbakestiller en sekvens i PostgreSQL er detaljert i dette innlegget. Ta en titt!

Eksempel på hvordan du tilbakestiller en sekvens i PostgreSQL

Med en INT-kolonne kan du opprette en sekvens med automatisk økning og bruke den som primærnøkkel for tabellen. På den måten trenger du ikke å angi verdiene når du kjører en INSERT-spørring, siden heltallsverdiene genereres automatisk. Når sekvensen er opprettet, lar kommandoen ALTER SEQUENCE deg starte sekvensen på nytt og spesifisere en ny startverdi for de nye oppføringene.







For dette eksemplet vil vi jobbe med følgende 'brukerdetaljer'-tabell. Vårt fokus er «user_id»-kolonnen som er en automatisk økningssekvens som starter på 100.





For å liste opp de forskjellige sekvensene i databasen din, kjør følgende kommando:





\ds

For vårt tilfelle målretter vi mot 'user_id'-sekvensen.



For å få flere detaljer om sekvensen, kjør 'velg'-spørringen som vist i følgende:

SELECT * FROM sekvensnavn;

Vi kan se at den siste verdien i den eksisterende sekvensen er 104. Vi tilbakestiller denne verdien og definerer en ny verdi som de nye oppføringene skal ha.

For å tilbakestille PostgreSQL-sekvensen, bruk følgende kommando:

ALTER SEQUENCE sequence_name START MED verdi på nytt;

For vårt tilfelle, la oss si at vi ønsker å starte sekvensen på nytt og starte de nye oppføringene ved 20. Etter å ha kjørt følgende kommando, får vi en utgang, som vist i det følgende, som bekrefter at sekvensen har blitt endret.

Hvis vi kjører den tidligere kommandoen på nytt for å få detaljene i sekvensen vår ved å bruke SELECT-setningen, kan vi se at den nye 'last_value' for dette tilfellet er verdien som vi spesifiserte med ALTER-kommandoen.

La oss sette inn en ny oppføring i tabellen vår for å se hva som skjer. Følgende bilde viser INSERT-spørringen og resultatene vi får etter å ha kjørt SELECT-setningen. Legg merke til hvordan den nye oppføringen har 'user_id' satt til 20. Alle de nye oppføringene vi lager vil ha sin 'user_id' generert basert på den siste verdien som er 20.

Hvis vi gjør en annen inngang, vil dens 'user_id' være 21 og sekvensen vil fortsette med samme logikk. Det er hvordan du tilbakestiller en sekvens i PostgreSQL. Merk at 'reset'-kommandoen ikke påvirker de eksisterende postene. Den definerer bare den nye startverdien for oppføringene du gjør etter tilbakestilling av sekvensen.

Konklusjon

Med PostgreSQL forenkler det å ha en måte å automatisk generere heltallsverdiene i primærnøkkelkolonnen. Når du har en eksisterende sekvens, kan du bruke ALTER SEQUENCE
kommando med RESTART WITH-alternativet for å spesifisere hvilken sekvens du vil tilbakestille og hvilken verdi som skal angis som siste verdi i sekvensen. På den måten vil nye oppføringer få heltallsverdien generert basert på den nye siste verdien. Se det presenterte eksemplet for å forstå hvordan tilbakestilling av en PostgreSQL-sekvens fungerer.