Prima di tutto devo dire:pessima idea farlo in questo modo. Per due motivi:
- Le connessioni sono basate sull'utente. Ciò significa che perdi in gran parte i vantaggi del pool di connessioni. Inoltre non si ridimensiona molto bene. Se hai 10.000 utenti contemporaneamente, aprirai e chiuderai continuamente connessioni fisse (piuttosto che pool di connessioni soft); e
- Come hai scoperto, creare e rimuovere utenti è DDL non DML e quindi perdi "transazionalità".
Non sono sicuro del motivo per cui hai scelto di farlo, ma lo farei fortemente consiglia di implementare gli utenti nell'applicazione e non nel livello del database.
Per quanto riguarda come risolvere il tuo problema, in pratica non puoi. Come se stessi creando una tabella o un indice nel mezzo della sequenza.