2010-07-07 13 views
1

Comment Oracle traite-t-il les instructions dml exécutées par plusieurs utilisateurs sur le même objet de données? Supposons,dml par plusieurs utilisateurs/scénarios de commit dans Oracle

S'il y a une table vide nommé EMP(empname varchar2(30)) et l'utilisateur « A » fait une entrée en elle

utilisant,

insert into emp values('A'); 

mais n'a pas commis encore.

Si un autre utilisateur « B » connecté dans la même base de données engage, aurait-il/elle voit les opérations DML effectuées par « A « (i.e., » A » dans le tableau EMP)? D'autres scénarios/liens liés à ce sujet seraient très appréciés. Merci d'avance.

Répondre

5

Les transactions ne sont pas visibles en dehors de votre session tant que vous ne les avez pas validées. Si un autre utilisateur se connecte, il verra la table telle qu'elle était stockée dans la base de données à son dernier état validé. C'est la raison pour annuler l'espace, refaire les journaux, etc. Dans votre scénario, l'utilisateur B ne verrait pas la transaction de A même si B a commis la sienne, car A n'a pas validé ses modifications.

1

Pour plus de détails sur la simultanéité des données et les transactions dans Oracle, voir le Oracle Concepts Guide.

+0

Merci pour le lien. – ssr532

1

Il est possible que plusieurs opérations dml d'insertion entrent en collision, même si elles ne sont pas validées. Si l'insertion dans emp ci-dessus est insérée dans une colonne indexée de façon unique (par exemple, une clé primaire), alors jusqu'à ce que l'utilisateur engagé ou annulé B ne puisse pas insérer la même valeur - il va bloquer. Ainsi, dans un sens, l'utilisateur B "voit" l'insertion non validée par A, bien que l'utilisateur B ne puisse pas sélectionner les valeurs insérées par A.