Oracle合并语句不是多线程的

时间:2010-01-12 16:54:10

标签: c# oracle merge

在这里寻找一些确认。我们正在尝试对从C#thru存储过程调用的两个表使用merge语句。调用是由单独的线程和/或进程完成的。我们在两列上获得了唯一的密钥违规,这些列也构成了on语句。

我们的理论是,语句与相同的数据同时发生,并且merge语句不是多线程安全的。其他人之前有过或看过这个问题吗?

对此问题的解决方案有何想法?

1 个答案:

答案 0 :(得分:4)

Oracle与调用端的线程和进程无关。

相反,它实现了自己的锁定机制,可防止来自两个逻辑会话的并发更新(可能会也可能不会由不同的线程,进程甚至机器启动)。

您看到的关键违规行为是这些机制(可能是正确的)工作的结果。

如果您发布了运行的查询,我可能会提供更具体的答案。