Trước hết tôi phải nói:ý tưởng tồi khi làm theo cách này. Vì hai lý do:
- Kết nối dựa trên người dùng. Điều đó có nghĩa là bạn sẽ mất phần lớn lợi ích của việc gộp kết nối. Nó cũng không mở rộng đáng kể. Nếu bạn có 10.000 người dùng trên cùng một lúc, bạn sẽ liên tục mở và đóng các kết nối cứng (thay vì nhóm kết nối mềm); và
- Như bạn đã phát hiện ra, việc tạo và xóa người dùng là DDL không phải DML và do đó bạn mất "tính giao dịch".
Không chắc tại sao bạn lại chọn làm điều này nhưng tôi thực sự muốn khuyên bạn nên triển khai người dùng tại ứng dụng chứ không phải lớp cơ sở dữ liệu.
Về cách giải quyết vấn đề của bạn, về cơ bản bạn không thể. Giống như thể bạn đang tạo một bảng hoặc một chỉ mục ở giữa trình tự của mình.