Sådan nulstiller du en sekvens i PostgreSQL

Sadan Nulstiller Du En Sekvens I Postgresql



Brug af PostgreSQL-sekvensen er en effektiv måde at arbejde med en automatisk stigningsværdi, især for primærnøgler. Når startværdien ikke er defineret, vil den automatiske stigning for INT begynde ved 0. Du kan dog angive, hvilken startværdi, der skal bruges til sekvensen, i din kolonne med automatisk stigning.

Desuden, hvis du får en situation, der kræver, at du ændrer den næste værdi i sekvensen, kan du hurtigt nulstille sekvensen og angive, hvilken værdi du skal starte med for den næste indtastning i tabellen. Alle de detaljer, du bør vide om, hvordan du nulstiller en sekvens i PostgreSQL, er beskrevet i dette indlæg. Tag et kig!

Eksempel på, hvordan man nulstiller en sekvens i PostgreSQL

Med en INT-kolonne kan du oprette en automatisk stigningssekvens og bruge den som den primære nøgle til din tabel. På den måde behøver du ikke indtaste dens værdier, når du kører en INSERT-forespørgsel, da heltalværdierne bliver genereret automatisk. Når sekvensen er oprettet, lader kommandoen ALTER SEQUENCE dig genstarte sekvensen og angive en ny startværdi for de nye poster.







I dette eksempel vil vi arbejde med følgende 'brugerdetaljer'-tabel. Vores fokus er 'user_id' kolonnen, som er en automatisk stigningssekvens, der starter ved 100.





For at liste de forskellige sekvenser i din database skal du køre følgende kommando:





\ds

I vores tilfælde målretter vi 'user_id'-sekvensen.



For at få flere detaljer om sekvensen skal du køre 'vælg'-forespørgslen som vist i det følgende:

VÆLG * FRA sekvensnavn;

Vi kan se, at den sidste værdi i den eksisterende sekvens er 104. Vi nulstiller denne værdi og definerer en ny værdi, som de nye poster skal have.

For at nulstille PostgreSQL-sekvensen skal du bruge følgende kommando:

ALTER SEQUENCE sekvensnavn GENSTART MED værdi;

For vores tilfælde, lad os sige, at vi vil genstarte sekvensen og starte de nye poster ved 20. Efter at have kørt følgende kommando, får vi et output, som vist i det følgende, som bekræfter, at sekvensen er blevet ændret.

Hvis vi gentager den tidligere kommando for at få detaljerne i vores sekvens ved hjælp af SELECT-sætningen, kan vi se, at den nye 'last_value' for dette tilfælde er den værdi, som vi specificerede med ALTER-kommandoen.

Lad os indsætte en ny post i vores tabel for at se, hvad der sker. Følgende billede viser INSERT-forespørgslen og de resultater, vi får efter at have kørt SELECT-sætningen. Læg mærke til, hvordan den nye post har sit 'user_id' sat til 20. Alle de nye poster, vi laver, vil have deres 'user_id' genereret baseret på den sidste værdi, som er 20.

Hvis vi laver en anden indtastning, vil dens 'bruger_id' være 21, og sekvensen vil fortsætte med den samme logik. Sådan nulstiller du en sekvens i PostgreSQL. Bemærk, at kommandoen 'nulstil' ikke påvirker de eksisterende poster. Den definerer kun den nye startværdi for de indtastninger, du foretager efter nulstilling af rækkefølgen.

Konklusion

Med PostgreSQL forenkler det at have en måde at automatisk generere heltalværdierne i din primære nøglekolonne på. Når du har en eksisterende sekvens, kan du bruge ALTER SEQUENCE
kommandoen med muligheden RESTART WITH for at angive, hvilken sekvens du vil nulstille, og hvilken værdi der skal angives som den sidste værdi i sekvensen. På den måde vil nye poster have den heltalsværdi, der er genereret baseret på den nye sidste værdi. Se det præsenterede eksempel for at forstå, hvordan nulstilling af en PostgreSQL-sekvens fungerer.