Używam SELECT lastval(), aby uzyskać błędny identyfikator seryjny po obcięciu tabeli.Sekwencja nie resetuje po obcięciu tabeli
kiedy obciąć tabelę, używam SELECT lastval(), mam złą id/
Używam SELECT lastval(), aby uzyskać błędny identyfikator seryjny po obcięciu tabeli.Sekwencja nie resetuje po obcięciu tabeli
kiedy obciąć tabelę, używam SELECT lastval(), mam złą id/
Jeśli chcesz zresetować sekwencję następnie:
setval('sequence_name', 0)
Do listy istniejący nazwy sekwencji problem a \ds
w wierszu polecenia psql.
Spróbuj
TRUNCATE TABLE table_name
RESTART IDENTITY;
Będzie
Automatically restart sequences owned by columns of the truncated table(s).
Szczegóły tutaj: TRUNCATE
BŁĄD: błąd składniowy w lub w pobliżu "RESTART" LINIA 1: przycięty produkt tabeli RESTART TOŻSAMOŚĆ; – user1369887
@ user1369887 Jaką wersję PostgreSQL posiadasz? –
Moja wersja serwera to: serwer 8.3.16 – user1369887
Po to standardowy sposób, aby przywrócić kolejność:
truncate table table_name restart identity;
ale w pewnym ver sion & platforma, to błąd składni,
w tym przypadku można skrócić bez sekwencji resetu i zmiany sekwencji z innym SQL, spróbuj tego:
truncate table table_name;
alter sequence seq_name start 1;
Sprawdź następny
ALTER SEQUENCE sequence_name RESTART WITH 1;
Najlepszym sposobem zresetowania sekwencji, aby rozpocząć od nowa za pomocą numeru 1, jest wykonanie następujących czynności po pomyślnym obcięciu:
ALTER SEQUENCE <tablename>_<id>_seq RESTART WITH 1
Tak więc, na przykład w tabeli użytkowników byłoby:
ALTER SEQUENCE users_id_seq RESTART WITH 1
Dziękujemy za ten fragment kodu, który może zapewnić ograniczoną, natychmiastową pomoc. Właściwe wyjaśnienie znacznie poprawi (// meta.stackexchange.com/q/114762) jego długoterminową wartość, pokazując * dlaczego * jest to dobre rozwiązanie problemu i sprawiłoby, że byłby bardziej przydatny dla przyszłych czytelników z inne, podobne pytania. Proszę [edytuj] swoją odpowiedź, aby dodać wyjaśnienia, w tym założenia, które podjąłeś. –
Proszę ... – jahmed31
Zauważ, że dla programowej identyfikacji sekwencji polu tam jest pg_get_serial_sequence funkcja. wybierz pg_get_serial_sequence ('tablename', 'colname'); –
Zły identyfikator oznacza, To nie jest faktyczne generowanie wartości identyfikatora. – user1369887