gpt4 book ai didi

sql-server - 在单个更新语句上使用事务

转载 作者:行者123 更新时间:2023-12-02 09:17:16 25 4
gpt4 key购买 nike

我在工作中为一些 SP 配音,我发现编写代码的人在像这样的单个更新语句上使用了事务

begin transaction 
*single update statment:* update table whatever with whatever
commit transaction

我知道这是错误的,因为当您想要更新多个更新时使用事务。我想从理论角度理解,使用上述代码的含义是什么?在有事务和没有事务的情况下更新无论什么表有什么区别吗?有没有额外的锁什么的?

最佳答案

可能由于之前或将来可能涉及其他数据的代码而包含该交易。也许开发人员只是养成了将代码包装在事务中的习惯,以确保“安全”?

但是,如果该语句实际上只涉及对单行的一次更新,那么在这种情况下该代码确实没有任何好处。事务不一定“锁定”任何东西,尽管其中执行的操作当然可以。它只是确保其中包含的所有操作都执行全有或全无。

请注意,事务与多个表无关,而是与多个更新有关。它确保多次更新发生,要么全有,要么全无。

因此,如果您将同一个表更新两次,无论有没有事务都会有差异。但您的示例仅显示一条更新语句,大概只更新一条记录。

事实上,事务将多个更新封装到同一个表中可能很常见。想象一下以下情况:

INSERT INTO Transactions (AccountNum, Amount) VALUES (1, 200)
INSERT INTO Transactions (AccountNum, Amount) values (2, -200)

这应该包含在交易中,以确保资金正确转移。如果其中一个失败,另一个也必须失败。

关于sql-server - 在单个更新语句上使用事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12369619/

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