2012-12-21 11 views

Odpowiedz

2

Jeśli chcesz zresetować sekwencję następnie:

setval('sequence_name', 0) 

Do listy istniejący nazwy sekwencji problem a \ds w wierszu polecenia psql.

+0

Zauważ, że dla programowej identyfikacji sekwencji polu tam jest pg_get_serial_sequence funkcja. wybierz pg_get_serial_sequence ('tablename', 'colname'); –

+0

Zły identyfikator oznacza, To nie jest faktyczne generowanie wartości identyfikatora. – user1369887

44

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

+0

BŁĄD: błąd składniowy w lub w pobliżu "RESTART" LINIA 1: przycięty produkt tabeli RESTART TOŻSAMOŚĆ; – user1369887

+0

@ user1369887 Jaką wersję PostgreSQL posiadasz? –

+0

Moja wersja serwera to: serwer 8.3.16 – user1369887

9

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; 
2

Sprawdź następny

ALTER SEQUENCE sequence_name RESTART WITH 1; 
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 
+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ś. –

+0

Proszę ... – jahmed31

Powiązane problemy