当前位置: 首页 > 知识库问答 >
问题:

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

壤驷经国
2023-03-14

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

从我的一个包含列A-F的表中,我需要选择max(列A)。使用max值并根据一些计算,我将不得不执行其他插入语句。

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

共有1个答案

柴修筠
2023-03-14

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

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

 类似资料:
  • 本文向大家介绍Spring如何在一个事务中开启另一个事务,包括了Spring如何在一个事务中开启另一个事务的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Spring如何在一个事务中开启另一个事务,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 spring使用@Transactional开启事务,而且该注解使用propagation属

  • 我正在尝试使用Hibernate保存数据。一切都发生在同一会话中。逻辑如下: 1)开始交易并尝试保存: 2) 如果新记录违反完整性约束,请在外包装方法中捕获异常,打开另一个事务并查询更多数据 问题是当第二个事务执行时query.list它会抛出一个应该与前一个事务链接的异常。 SQLIntegrityConstraintViolationException:ORA-00001:唯一约束 我应该从另

  • 据我所知,SQL事务在写查询的情况下特别有用,即当有多个涉及< code>write查询的并发事务时,如果另一个事务已经在它之前提交,一个事务将在< code>commit上得到错误,导致第一个事务可能没有更新的数据。以便它不会盲目地更新数据,也不会忘记另一个事务所做的修改。 我还了解数据库的“原子性”方面,一组操作将是原子的,在执行过程中,要么所有操作都必须成功执行,要么如果发生任何错误,则完全

  • 我有一个方法,我试图改变一些实体,在这个方法中我也想保存交易信息。当发生任何异常时,我想回滚保存实体,但仍然想保存交易。那么如何为实体事务建立一个存储库,而不是为事务建立一个存储库呢? 有存储库的代码 但这没有帮助。保存放置在最后一个块中的交易。 使现代化 我用AOP解决了这个问题。我在aspect advice中创建了事务对象,并将其保存在JPA事务之外。

  • 问题内容: 我们没有只介绍ArrayLists数组和2D数组。我需要做的是能够从另一个类的ArrayList中读取。主要目的是在for循环中读取它们,并使用存储在其中的值显示项目。但是,我已经制作了这个快速程序来对其进行测试并不断得到此错误 这是我的代码 然后是ArrayList所在的类 如果有人可以指出正确的方向,那将非常有价值。我尝试调试,但是我可以获得任何帮助。 提前致谢。 问题答案: 严格

  • 问题内容: 是否有一种隐藏的方法可以在 不 读取整行的 情况下 从文件或类似文件的对象读取令牌?我立即拥有的应用程序(其他人的问题,不是我的问题)正在将具有几个非常长的行的大型矩阵转置,本质上是对选择单个列元素的迭代器执行操作。这个想法不是在迭代过程中将整个文件存储在内存中。 这些行是用空格分隔的ASCII十进制数字。 对于Java的Scanner类,问题可能很简单,但我没有在Python标准库中