0

关于这个问题,如果多个线程一起进入,如何创建查询以确保只有 1 个事务在工作?

UPDATE DPCM_BRANCH SET COUNTER = COUNTER+1 WHERE BRANCH=213546 and (SELECT COUNTER from dpcm_branch where counter = 122);

以上只是一个示例。我确信上面的代码返回错误。

我使用 C# 和 Oracle SQL 进行编码。

对于上面的代码,我想在 COUNTER 与最新的 COUNTER(122) 匹配时更新 COUNTER。

有人可以帮我吗??

4

1 回答 1

2
UPDATE DPCM_BRANCH SET COUNTER = COUNTER + 1 
       WHERE BRANCH = 213546 and counter = 122;

我不确定您的需要,但如果目标是序列化线程,则更新只能在它能够获取行上的锁时发生,阻塞其他线程直到持有者执行提交或回滚。

于 2013-08-01T11:48:56.683 回答