Vous recherchez simplement une confirmation ici. Nous essayons d'utiliser l'instruction de fusion pour deux tables appelées depuis C# via procs stockés. les appels sont faits à partir de threads et/ou de processus séparés. Nous obtenons des violations de clé uniques sur les deux colonnes qui composent également l'instruction on. Notre théorie pour cela est que les instructions se produisent simultanément avec les mêmes données et que l'instruction de fusion n'est pas multithread safe. Quelqu'un d'autre a ou voit ce problème avant?Déclaration de fusion Oracle non multithread
Avez-vous des idées sur les solutions à ce problème?
Dan
Dano, gardez à l'esprit que vos instructions sont probablement exécutées par 2 sessions de bases de données logiques. Cela signifie 2 transactions Oracle distinctes (mais simultanées). Ainsi, le serveur Oracle voit le travail en cours dans deux sessions de serveur distinctes. Vérifiez les déclarations que vous envoyez au serveur Oracle et vérifiez vos contraintes, comme le souligne Quassnoi, elles font probablement exactement ce qu'elles sont censées faire. –
Merci à tout le monde, et je comprends ce qui se passe et je peux voir la justesse de celui-ci, mais je suis surpris qu'il n'y ait pas plus de fusion sur la sécurité multithread. Dans le code C# si j'avais un objet comme dire un dictionnaire qui permettait les fusions, je verrouillerais le dictionnaire avant l'insertion, ou la mise à jour de sorte que lorsque j'apporterais des modifications au dictionnaire, deux clés de même valeur ne pourraient pas être insérées. –