Szczegółowy przykład implementacji sekwencji bez przerw przy użyciu PL/PgSQL napisałem tutaj .
Ogólna idea jest taka, że chcesz, aby tabela przechowywała wartości sekwencji i używasz SELECT ... FOR UPDATE
po którym następuje UPDATE
- lub skrótem UPDATE ... RETURNING
- aby uzyskać z niego wartości podczas blokowania wiersza, dopóki transakcja nie zostanie zatwierdzona lub wycofana.