Oracle
 sql >> Base de données >  >> RDS >> Oracle

Test unitaire des instructions DDL qui doivent être dans une transaction

Tout d'abord, je dois dire :mauvaise idée de le faire de cette façon. Pour deux raisons :

  1. Les connexions sont basées sur l'utilisateur. Cela signifie que vous perdez en grande partie les avantages de la mise en commun des connexions. Il ne s'adapte pas très bien non plus. Si vous avez 10 000 utilisateurs à la fois, vous allez continuellement ouvrir et fermer des connexions matérielles (plutôt que des pools de connexions logicielles); et
  2. Comme vous l'avez découvert, la création et la suppression d'utilisateurs sont du DDL et non du DML et vous perdez donc la "transactionnalité".

Je ne sais pas pourquoi vous avez choisi de le faire, mais je le ferais fortement vous recommandons d'implémenter les utilisateurs au niveau de l'application et non au niveau de la base de données.

Quant à la façon de résoudre votre problème, fondamentalement, vous ne pouvez pas. Comme si vous créiez une table ou un index au milieu de votre séquence.