2012-04-11 19 views
7

Ho aggiunto manualmente alcune righe alla tabella e inoltre ho impostato manualmente l'ID (auto_increment). Ora quando provo ad aggiungere una nuova riga attraverso la mia app nella tabella DB, alla tabella DB viene visualizzato l'errore, che il valore dell'ID creato esiste già.PostgresSQL - come impostare manualmente il valore successivo di auto_increment?

Come posso impostare manualmente il valore ID successivo (ad esempio, nella tabella Devo ID, quindi come dire a PostgreSQL, che il prossimo ID dovrebbe essere contato dal numero 3)?

risposta

16

http://www.postgresql.org/docs/9.1/static/functions-sequence.html

select setval('sequence-name', <new-value>); 

È possibile ottenere il nome della sequenza dalla definizione della tabella:

id  | integer    | not null default nextval('id_seq'::regclass) 

In questo caso la sequenza si chiama 'id_seq'

Edit (10x a @ Glenn):

SELECT setval('id_seq', max(id)) FROM table; 
+1

e SET al risultato di SELEZIONE MAX (id) +1 da MyTable. – Glenn

2

penso che ci sia un modo più semplice:

ALTER SEQUENCE "seq_product_id" RESTART WITH 10 
Problemi correlati