Ako resetovať sekvenciu v PostgreSQL

Ako Resetovat Sekvenciu V Postgresql



Použitie sekvencie PostgreSQL je efektívny spôsob práce s hodnotou automatického prírastku, najmä pre primárne kľúče. Keď počiatočná hodnota nie je definovaná, automatické zvýšenie pre INT začne na 0. Môžete však určiť, ktorá počiatočná hodnota sa má použiť pre sekvenciu v stĺpci automatického prírastku.

Navyše, ak sa dostanete do situácie, ktorá si vyžaduje, aby ste zmenili nasledujúcu hodnotu v sekvencii, môžete sekvenciu rýchlo resetovať a určiť, s akou hodnotou začať pre ďalší záznam v tabuľke. Všetky podrobnosti, ktoré by ste mali vedieť o tom, ako resetovať sekvenciu v PostgreSQL, sú podrobne uvedené v tomto príspevku. Pozri sa!

Príklad o tom, ako resetovať sekvenciu v PostgreSQL

Pomocou stĺpca INT môžete vytvoriť postupnosť automatického prírastku a použiť ju ako primárny kľúč pre vašu tabuľku. Týmto spôsobom nebudete musieť zadávať jeho hodnoty pri spustení dotazu INSERT, pretože celočíselné hodnoty sa vygenerujú automaticky. Po vytvorení sekvencie vám príkaz ALTER SEQUENCE umožní reštartovať sekvenciu a zadať novú počiatočnú hodnotu pre nové položky.







V tomto príklade budeme pracovať s nasledujúcou tabuľkou „user_details“. Zameriavame sa na stĺpec „user_id“, čo je sekvencia automatického prírastku začínajúca na 100.





Ak chcete zobraziť zoznam rôznych sekvencií vo vašej databáze, spustite nasledujúci príkaz:





\ds

V našom prípade sa zameriavame na sekvenciu „user_id“.



Ak chcete získať ďalšie podrobnosti o sekvencii, spustite dotaz „vybrať“, ako je znázornené v nasledujúcom texte:

SELECT * FROM názov_sekvencie;

Vidíme, že posledná hodnota v existujúcej sekvencii je 104. Túto hodnotu vynulujeme a definujeme novú hodnotu, ktorú budú mať nové položky.

Ak chcete resetovať sekvenciu PostgreSQL, použite nasledujúci príkaz:

ALTER SEQUENCE názov_sekvencie RESTART WITH hodnotou;

V našom prípade povedzme, že chceme reštartovať sekvenciu a začať nové položky na 20. Po spustení nasledujúceho príkazu dostaneme výstup, ako je uvedené nižšie, ktorý potvrdzuje, že sekvencia bola zmenená.

Ak znova spustíme predchádzajúci príkaz, aby sme získali podrobnosti o našej sekvencii pomocou príkazu SELECT, môžeme vidieť, že nová „posledná_hodnota“ je v tomto prípade hodnota, ktorú sme zadali príkazom ALTER.

Vložme nový záznam do našej tabuľky, aby sme videli, čo sa stane. Nasledujúci obrázok zobrazuje dotaz INSERT a výsledky, ktoré získame po spustení príkazu SELECT. Všimnite si, ako má nová položka svoje „user_id“ nastavené na 20. Všetky nové položky, ktoré vytvoríme, budú mať svoje „user_id“ vygenerované na základe poslednej hodnoty, ktorá je 20.

Ak urobíme ďalší vstup, jeho „user_id“ bude 21 a sekvencia bude pokračovať podľa rovnakej logiky. Takto resetujete sekvenciu v PostgreSQL. Upozorňujeme, že príkaz „reset“ neovplyvňuje existujúce záznamy. Definuje iba novú počiatočnú hodnotu pre záznamy, ktoré vykonáte po resetovaní sekvencie.

Záver

S PostgreSQL to zjednodušuje možnosť automatického generovania celočíselných hodnôt v stĺpci primárneho kľúča. Ak máte existujúcu sekvenciu, môžete použiť ALTER SEQUENCE
príkaz s voľbou RESTART WITH na určenie, ktorú sekvenciu chcete vynulovať a akú hodnotu nastaviť ako poslednú hodnotu v sekvencii. Týmto spôsobom budú mať nové položky celočíselnú hodnotu vygenerovanú na základe novej poslednej hodnoty. Pozrite si uvedený príklad, aby ste pochopili, ako funguje resetovanie sekvencie PostgreSQL.