currval
zwróci ostatnią wartość wygenerowaną dla sekwencji w ramach bieżącej sesji. Więc jeśli inna sesja wygeneruje nową wartość dla sekwencji, nadal możesz pobrać ostatnią wartość wygenerowaną przez TWOJĄ sesję, unikając błędów.
Ale aby uzyskać ostatnią wygenerowaną wartość w dowolnej sesji, możesz użyć powyższego:
SELECT last_value FROM your_sequence_name;
Bądź ostrożny, jeśli wartość została użyta przez inną sesję z niezatwierdzoną (lub przerwaną) transakcją i użyjesz tej wartości jako odniesienia, możesz otrzymać błąd. Nawet po uzyskaniu tej wartości może już być nieaktualna. Ogólnie ludzie potrzebują tylko currval
lub nawet powrót setval
.