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.