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.