Jak zresetować sekwencję w PostgreSQL

Jak Zresetowac Sekwencje W Postgresql



Używanie sekwencji PostgreSQL to skuteczny sposób pracy z wartością automatycznego zwiększania, szczególnie w przypadku kluczy podstawowych. Jeżeli wartość początkowa nie jest zdefiniowana, automatyczny przyrost dla INT rozpocznie się od 0. Można jednak określić, jaka wartość początkowa ma być używana dla sekwencji w kolumnie automatycznego przyrostu.

Co więcej, jeśli pojawi się sytuacja wymagająca zmiany kolejnej wartości w sekwencji, możesz szybko zresetować sekwencję i określić, od jakiej wartości zacząć kolejny wpis w tabeli. Wszystkie szczegóły, które powinieneś znać, dotyczące resetowania sekwencji w PostgreSQL, są szczegółowo opisane w tym poście. Spójrz!

Przykład resetowania sekwencji w PostgreSQL

Za pomocą kolumny INT możesz utworzyć sekwencję automatycznego zwiększania i używać jej jako klucza podstawowego tabeli. W ten sposób nie będziesz musiał wprowadzać jego wartości podczas uruchamiania zapytania INSERT, ponieważ wartości całkowite zostaną wygenerowane automatycznie. Po utworzeniu sekwencji polecenie ALTER SEQUENCE umożliwia ponowne uruchomienie sekwencji i określenie nowej wartości początkowej dla nowych wpisów.







W tym przykładzie będziemy pracować z poniższą tabelą „user_details”. Skupiamy się na kolumnie „user_id”, która jest sekwencją automatycznego zwiększania zaczynającą się od 100.





Aby wyświetlić listę różnych sekwencji w bazie danych, uruchom następującą komendę:





\ds

W naszym przypadku celujemy w sekwencję „user_id”.



Aby uzyskać więcej szczegółów na temat sekwencji, uruchom zapytanie „wybierz”, jak pokazano poniżej:

WYBIERZ * Z nazwa_sekwencji;

Widzimy, że ostatnia wartość w istniejącej sekwencji to 104. Resetujemy tę wartość i definiujemy nową wartość, jaką będą miały nowe wpisy.

Aby zresetować sekwencję PostgreSQL, użyj następującego polecenia:

ZMIEŃ SEKWENCJĘ nazwa_sekwencji RESTART Z wartością;

W naszym przypadku załóżmy, że chcemy zrestartować sekwencję i rozpocząć nowe wpisy od 20. Po uruchomieniu poniższego polecenia otrzymamy wynik, jak pokazano poniżej, który potwierdza, że ​​sekwencja została zmieniona.

Jeśli ponownie uruchomimy wcześniejsze polecenie, aby uzyskać szczegóły naszej sekwencji za pomocą instrukcji SELECT, zobaczymy, że nowa „ostatnia_wartość” w tym przypadku to wartość określona za pomocą polecenia ALTER.

Wstawmy nowy wpis do naszej tabeli i zobaczmy, co się stanie. Poniższy obrazek przedstawia zapytanie INSERT oraz wyniki jakie otrzymamy po uruchomieniu instrukcji SELECT. Zwróć uwagę, że nowy wpis ma swój „user_id” ustawiony na 20. Wszystkie nowe wpisy, które wprowadzimy, będą miały swój „user_id” wygenerowany na podstawie ostatniej wartości, która wynosi 20.

Jeśli wprowadzimy kolejne dane, jego „user_id” będzie wynosić 21, a sekwencja będzie kontynuowana przy użyciu tej samej logiki. W ten sposób resetujesz sekwencję w PostgreSQL. Należy pamiętać, że polecenie „reset” nie ma wpływu na istniejące rekordy. Określa jedynie nową wartość początkową dla wpisów dokonanych po zresetowaniu sekwencji.

Wniosek

Dzięki PostgreSQL możliwość automatycznego generowania wartości całkowitych w kolumnie klucza podstawowego upraszcza sprawę. Jeśli masz już istniejącą sekwencję, możesz użyć ALTER SEQUENCE
polecenie z opcją RESTART Z określającą, którą sekwencję chcesz zresetować i jaką wartość ustawić jako ostatnią wartość w sekwencji. Dzięki temu nowe wpisy będą miały wartość całkowitą generowaną na podstawie nowej, ostatniej wartości. Zapoznaj się z przedstawionym przykładem, aby zrozumieć, jak działa resetowanie sekwencji PostgreSQL.