gpt4 book ai didi

java - 我真的需要数据库事务吗?

转载 作者:行者123 更新时间:2023-12-01 20:18:36 25 4
gpt4 key购买 nike

如果我的方法有多个只读且仅更新、删除语句,那么创建事务还有意义吗?虽然,从表面上看它没有任何意义(如果它是单线程的话);但这是一个并发 Web 应用程序,其中多个线程可能会同时修改数据。

最佳答案

是的,可能有充分的理由将读取(SELECT)操作包含在显式事务或工作单元中。如果更新或删除某些行的决定取决于您读取的行(同一行或另一个表中的行)中的列值,甚至某些行的存在,那么您可能需要将 SELECT 作为一部分交易。

一个简单的示例案例:表 A 包含书籍,并且有一个用于评分的 int 列。我想删除评分为零 (0) 的图书行。如果没有事务,数据层中的代码会选择评级为 0 的行,然后迭代该书籍行的集合。在您选择行后的某个时间,另一个用户将其中一本书的评级更改为一 (1)。您最终仍然删除了该书行,而它不应该被删除。

有数据一致性的策略,以及在获取数据(时间戳等)后检查更新的策略,但您只需要在读取数据并根据该数据做出决策时评估数据完整性的风险,并且您允许其他用户更新相同的数据。

交易旨在消除这种风险。

关于java - 我真的需要数据库事务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45289751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com