Pertama saya harus mengatakan:ide buruk melakukannya dengan cara ini. Karena dua alasan:
- Koneksi didasarkan pada pengguna. Itu berarti Anda sebagian besar kehilangan manfaat penyatuan koneksi. Itu juga tidak skala sangat baik. Jika Anda memiliki 10.000 pengguna sekaligus, Anda akan terus membuka dan menutup koneksi keras (bukan kumpulan koneksi lunak); dan
- Seperti yang Anda temukan, membuat dan menghapus pengguna adalah DDL bukan DML dan dengan demikian Anda kehilangan "transaksionalitas".
Tidak yakin mengapa Anda memilih untuk melakukannya, tetapi saya akan sangat menyarankan Anda mengimplementasikan pengguna di aplikasi dan bukan di lapisan basis data.
Adapun cara mengatasi masalah Anda, pada dasarnya Anda tidak bisa. Sama seperti jika Anda membuat tabel atau indeks di tengah urutan Anda.