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

currval non è stato ancora definito questa sessione, come ottenere sequenze multi-sessione?

Il currval restituirà l'ultimo valore generato per la sequenza all'interno della sessione corrente. Quindi se un'altra sessione genera un nuovo valore per la sequenza puoi comunque recuperare l'ultimo valore generato dalla TUA sessione, evitando errori.

Ma, per ottenere l'ultimo valore generato su qualsiasi sessione, puoi utilizzare quanto sopra:

SELECT last_value FROM your_sequence_name;

Fai attenzione, se il valore è stato utilizzato da un'altra sessione con una transazione non vincolata (o interrotta) e usi questo valore come riferimento, potresti ricevere un errore. Anche dopo aver ottenuto questo valore potrebbe essere già scaduto. Generalmente le persone hanno solo bisogno del currval o anche il ritorno di setval .