SQL UPDATE如何工作

在SQL UPDATE语句中,对换两个变量的值,不需要临时变量。=右侧的值在整个UPDATE语句中都是一致的;所有的更新同时发生,而不是一个接着一个发生。

例如:

UPDATE offenceTeam
        SET goalShooter=wingAttack,
               wingAttack=goalShooter;


我在SQL SERVER中试验过,goalShooter和wingAttack字段的值确实对换了。值得说明的是:这个情况只在Oracle,SQL SERVER和PostgreSQL中发生,在Mysql里面是不成立的。这个例子来源于《SQL Hacks》。下面是他的解释:

当关系数据库执行更新时,它必须在某个位置维护一份所有原始值的副本,以便确保隔离事务。一条UPDATE语句可能影响数千行数据,也可能要花上数分钟的时间才能完成。如果在更新过程中发生失败,系统确保能够回滚,不提供任何修改。

系统在第一次修改发生之前能够访问所有值。并且,正常情况下你也无法预测更新发生的次序,因此,明智的行为是,相对于原始值应用修改,而不考虑命令执行过程中产生的修改。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值