Escribí un ejemplo detallado de una implementación de secuencia sin espacios usando PL/PgSQL aquí .
La idea general es que desea una tabla para almacenar los valores de secuencia y usa SELECT ... FOR UPDATE
seguido de UPDATE
- o la forma abreviada UPDATE ... RETURNING
- para obtener valores de él mientras bloquea la fila hasta que su transacción se confirme o revierta.