Antes de mais nada, tenho que dizer:má ideia fazer assim. Por dois motivos:
- As conexões são baseadas no usuário. Isso significa que você perde em grande parte os benefícios do pool de conexões. Também não escala muito bem. Se você tiver 10.000 usuários ao mesmo tempo, estará continuamente abrindo e fechando conexões físicas (em vez de pools de conexões flexíveis); e
- Como você descobriu, criar e remover usuários é DDL, não DML e, portanto, você perde "transacionalidade".
Não tenho certeza por que você escolheu fazer isso, mas eu fortemente recomendamos que você implemente usuários no aplicativo e não na camada de banco de dados.
Quanto a como resolver seu problema, basicamente você não pode. O mesmo que se você estivesse criando uma tabela ou um índice no meio de sua sequência.