Jak resetovat sekvenci v PostgreSQL

Jak Resetovat Sekvenci V Postgresql



Použití sekvence PostgreSQL je efektivní způsob práce s hodnotou automatického přírůstku, zejména u primárních klíčů. Není-li počáteční hodnota definována, automatický přírůstek pro INT začne na 0. Můžete však určit, jakou počáteční hodnotu pro sekvenci použít ve sloupci automatického přírůstku.

Navíc, pokud se dostanete do situace, která vyžaduje změnu další hodnoty v sekvenci, můžete sekvenci rychle resetovat a určit, s jakou hodnotou začít pro další položku v tabulce. Všechny podrobnosti, které byste měli vědět o tom, jak resetovat sekvenci v PostgreSQL, jsou podrobně popsány v tomto příspěvku. Podívej se!

Příklad jak resetovat sekvenci v PostgreSQL

Pomocí sloupce INT můžete vytvořit sekvenci automatického přírůstku a použít ji jako primární klíč pro vaši tabulku. Při spuštění dotazu INSERT tak nebudete muset zadávat jeho hodnoty, protože celočíselné hodnoty se vygenerují automaticky. Po vytvoření sekvence vám příkaz ALTER SEQUENCE umožní restartovat sekvenci a zadat novou počáteční hodnotu pro nové položky.







V tomto příkladu budeme pracovat s následující tabulkou „user_details“. Zaměřujeme se na sloupec „user_id“, což je sekvence automatického přírůstku začínající na 100.





Chcete-li vypsat různé sekvence ve vaší databázi, spusťte následující příkaz:





\ds

V našem případě cílíme na sekvenci „user_id“.



Chcete-li získat další podrobnosti o sekvenci, spusťte dotaz „select“, jak je ukázáno v následujícím:

SELECT * FROM název_sekvence;

Vidíme, že poslední hodnota v existující sekvenci je 104. Tuto hodnotu resetujeme a definujeme novou hodnotu, kterou budou mít nové položky.

Chcete-li resetovat sekvenci PostgreSQL, použijte následující příkaz:

ALTER SEQUENCE název_sekvence RESTART WITH hodnota;

Pro náš případ řekněme, že chceme restartovat sekvenci a začít nové položky na 20. Po spuštění následujícího příkazu dostaneme výstup, jak je ukázáno v následujícím, který potvrzuje, že sekvence byla změněna.

Pokud znovu spustíme předchozí příkaz, abychom získali podrobnosti o naší sekvenci pomocí příkazu SELECT, můžeme vidět, že nová „poslední_hodnota“ je v tomto případě hodnota, kterou jsme zadali příkazem ALTER.

Vložme nový záznam do naší tabulky, abychom viděli, co se stane. Následující obrázek ukazuje dotaz INSERT a výsledky, které získáme po spuštění příkazu SELECT. Všimněte si, že nová položka má své „user_id“ nastavené na 20. Všechny nové položky, které vytvoříme, budou mít své „user_id“ vygenerované na základě poslední hodnoty, která je 20.

Pokud uděláme další vstup, jeho „user_id“ bude 21 a sekvence bude pokračovat podle stejné logiky. Takto resetujete sekvenci v PostgreSQL. Všimněte si, že příkaz „reset“ nemá vliv na existující záznamy. Definuje pouze novou počáteční hodnotu pro záznamy, které provedete po resetování sekvence.

Závěr

S PostgreSQL to zjednodušuje způsob, jak automaticky generovat celočíselné hodnoty ve sloupci primárního klíče. Pokud máte existující sekvenci, můžete použít ALTER SEQUENCE
příkaz s volbou RESTART WITH, abyste určili, kterou sekvenci chcete resetovat a jakou hodnotu nastavit jako poslední hodnotu v sekvenci. Tímto způsobem budou mít nové položky celočíselnou hodnotu vygenerovanou na základě nové poslední hodnoty. Podívejte se na uvedený příklad, abyste pochopili, jak resetování sekvence PostgreSQL funguje.