Chciałbym zmusić pole automatycznego przyrostu tabeli do pewnej wartości, próbowałem z tym:
ALTER TABLE product AUTO_INCREMENT = 1453
I
ALTER SEQUENCE product RESTART WITH 1453;
ERROR: relation "your_sequence_name" does not exist
Jestem nowy w postgresie :(
Mam tabeli product
z Id
i name
pola
Odpowiedzi:
Jeśli utworzyłeś tabelę
product
zid
kolumną, sekwencja nie jest po prostu wywoływanaproduct
, ale raczejproduct_id_seq
(to znaczy${table}_${column}_seq
).Oto
ALTER SEQUENCE
polecenie, którego potrzebujesz:Możesz zobaczyć sekwencje w bazie danych za pomocą
\ds
komendy psql. Jeśli to zrobisz\d product
i spojrzysz na domyślne ograniczenie dla kolumny,nextval(...)
wywołanie określi również nazwę sekwencji.źródło
ALTER SEQUENCE yourTableName_yourColumnName_seq RESTART WITH #
, gdzie „seq” to dosłowny tekst, a ty wstawisz liczbę dla #. Nie zaniedbuj podkreślników. :-)ALTER SEQUENCE my_schema.product_id_seq RESTART WITH 1453
1453
, powinieneśRESTART WITH 1454
.Oto polecenie, którego szukasz, zakładając, że sekwencją dla tabeli produktów jest id_produktu:
źródło
Następujące polecenie wykonuje to automatycznie: Spowoduje to również usunięcie wszystkich danych w tabeli. Więc uważaj.
źródło
TABLE
kluczowe jest zbędne.TRUNCATE someTable RESTART IDENTITY;
wystarczy.TRUNCATE someTable RESTART IDENTITY CASCADE;
?Aby ustawić licznik sekwencji:
Jeśli nie znasz nazwy sekwencji, użyj
pg_get_serial_sequence
funkcji:Parametry to nazwa tabeli i nazwa kolumny.
Lub po prostu wydać
\d product
upsql
monit:źródło
- Zmień wartość początkową sekwencji
To samo, ale dynamiczne:
Zgadzam się, że użycie SELECT jest niepokojące, ale działa.
Źródło: https://kylewbanks.com/blog/Adding-or-Modifying-a-PostgreSQL-Sequence-Auto-Increment
źródło
brew services restart postgresql
Przekształcony z komentarza dla wygody gości
Z tego komunikatu nie wynika jasno, jaka jest poprawna składnia. To jest:
źródło
jeśli chcesz zresetować automatyczny przyrost z GUI, wykonaj następujące kroki.
źródło
Jeśli masz tabelę z kolumną TOŻSAMOŚĆ, dla której chcesz zresetować następną wartość, możesz użyć następującego polecenia:
źródło
sequence
lub NIE możesz obciąć stołu. Myślę, że to najlepsza odpowiedźAby zresetować automatyczny przyrost, musisz uzyskać nazwę sekwencji za pomocą następującego zapytania.
Składnia:
Przykład:
Zapytanie zwróci nazwę sekwencji autoid jako „Demo_autoid_seq” Następnie użyj następującego zapytania, aby zresetować autoid
Składnia:
Przykład:
źródło
Aby uzyskać identyfikator sekwencji, użyj
To da ci identyfikator sekwencyjny jako tableName_ColumnName_seq
Aby uzyskać ostatni numer nasion, użyj
lub jeśli znasz identyfikator sekwencji, użyj go bezpośrednio.
Daje ci ostatni numer nasion
Aby zresetować numer nasion, użyj
źródło
Użyj tego zapytania, aby sprawdzić, co to jest klucz sekwencji ze schematem i tabelą,
Użyj tego zapytania, zwiększaj wartość przyrostu jeden po drugim,
Podczas wstawiania do tabeli jako klucz (111) używana będzie następna wartość przyrostowa.
Użyj tego zapytania, aby ustawić określoną wartość jako wartość przyrostową
Przy wstawianiu do tabeli jako klucz (121) będzie używana następna wartość przyrostowa.
źródło
Zauważ, że jeśli masz nazwę tabeli z „_”, jest ona usuwana w nazwie sekwencji.
Na przykład nazwa tabeli: user_tokens kolumna: id Nazwa sekwencji: usertokens_id_seq
źródło