Ho scritto un esempio dettagliato di un'implementazione di una sequenza gapless utilizzando PL/PgSQL qui .
L'idea generale è che vuoi che una tabella memorizzi i valori della sequenza e usi SELECT ... FOR UPDATE seguito da UPDATE - o l'abbreviazione UPDATE ... RETURNING - per ottenere valori da esso bloccando la riga fino a quando la transazione non viene eseguita o ripristinata.