0

如何实现一个事务读取的行不允许另一个事务读取的情况?

从我的一张带有 A-F 列的表中,我需要选择max(columnA). 使用最大值并基于一些计算,我将不得不执行其他插入语句。

使用可序列化的隔离级别,2 个事务正在读取相同的最大值。这会导致一个事务的锁等待和另一个事务的死锁。

4

1 回答 1

0

您可能无法仅基于隔离级别来解决此问题。

您可以进行的设计更改是单独存储最大值并具有三阶段标志以及记录说明 - 最大值已处理,正在处理和未处理。因此,每当事务从表中读取最大值时,它就可以检查最大值是否已被处理。如果是这样,它不会执行其他插入语句。

于 2012-08-04T05:58:29.267 回答