PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL:valore seriale successivo in una tabella

Se desideri richiedere un ID e restituirlo, puoi utilizzare nextval() , che fa avanzare la sequenza senza inserire alcun dato.

Nota che se questo è un SERIAL colonna, è necessario trovare il nome della sequenza in base alla tabella e al nome della colonna, come segue:

Select nextval(pg_get_serial_sequence('my_table', 'id')) as new_id;

Non vi è alcuna garanzia assoluta che vedrai questi ID tornare in ordine (la sequenza li genera in ordine, ma più sessioni possono rivendicare un ID e non utilizzarlo ancora, oppure ripristinare un INSERT e l'ID non verrà riutilizzato) ma c'è la garanzia che saranno univoci, che normalmente è la cosa importante.

Se lo fai spesso senza utilizzare effettivamente l'ID, alla fine utilizzerai tutti i possibili valori di un integer a 32 bit colonna (ovvero raggiungi il numero intero massimo rappresentabile), ma se la usi solo quando c'è un'alta probabilità di inserire effettivamente una riga con quell'ID dovrebbe essere OK.