gpt4 book ai didi

sql - 事务总是原子的吗?

转载 作者:行者123 更新时间:2023-12-03 01:24:16 25 4
gpt4 key购买 nike

我试图更好地理解 SQL Server 事务的细微差别。

假设我有一个更新 1,000 条现有行的查询,将其中一列的值更新为 1 到 1,000。可以执行此查询,并且在完成后,这些行将不会按顺序编号。这是因为在我的查询完成之前另一个查询可能会修改其中一行。

另一方面,如果我将这些更新包装在事务中,则可以保证如果任何一个更新失败,我可以使所有更新失败。但这是否也意味着当我完成后这些行将保证是连续的?

换句话说,事务总是原子的吗?

最佳答案

But does it also mean that those rows would be guaranteed to be sequential when I'm done?

没有。这与事务无关,因为您所要求的根本不存在:关系表没有顺序,要求“顺序行”是错误的问题。您可以将问题改写为“这 1000 个更新行是否包含从 1 到 1000 的整个序列,没有间隙”?最有可能的是,但事实是,根据您进行更新的方式,可能会存在差距。这些间隙不会出现,因为更新的行是在提交之前更新后修改的,但因为更新将是无操作(不会更新任何行),这是读-修改-写回类型更新的常见问题(由于并发操作,行在读取和写回之间“消失”)。

为了更准确地回答您的问题,您的代码是否正确,您必须发布您正在执行更新的确切代码,以及确切的表结构,包括所有索引。

关于sql - 事务总是原子的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6655932/

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