加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 06:25:34 所属栏目:MsSql教程 来源:网络整理
导读:我在工作中配音一些SP,我发现编写代码的人在这样的单个更新语句中使用了一个事务 begin transaction *single update statment:* update table whatever with whatevercommit transaction 我知道这是错误的,因为当您想要更新多个更新时使用事务. 我想从理论上
我在工作中配音一些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)

这应该包含在交易中,以确保钱被正确转移.如果一个失败了,那么另一个失败了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读