我了解事务如何有助于协调一对更新。我不明白的是在事务中包装单个语句,这是我所见过的 90%。事实上,在现实生活中的代码中,根据我的经验,更常见的是发现一系列逻辑相关的事务,每个事务都包装在自己的事务中,但整体并未包装在事务中。
在 MS-SQL 中,在事务中包装单个选择、单个更新、单个插入或单个删除有什么好处吗?
我怀疑这是迷信编程。
它什么也不做。所有单独的 SQL 语句(除了极少数例外,例如无日志批量插入或截断表)都会自动“在事务中”,无论您是否明确这么说。(即使它们插入、更新或删除数百万行) 。
编辑:基于@Phillip下面的评论...在当前版本的SQL Server中,即使是批量插入和截断表也会写some将数据写入事务日志,尽管不如其他操作那么多。从事务角度来看,关键区别在于,在这些其他类型的操作中,正在修改的数据库表中的数据不在日志中处于允许回滚的状态。
所有这意味着语句对数据库中数据所做的更改都会记录到事务日志中,以便在操作失败时可以撤消这些更改。
“开始事务”、“提交事务”和“回滚事务”命令提供的唯一功能是允许您将两个或多个单独的 SQL 语句放入同一个事务中。
编辑:(加强标记评论...)是的,这可能归因于“迷信”编程,或者它可能表明对数据库事务的性质存在根本误解。一种更宽容的解释是,这只是过度应用一致性的结果,这是不恰当的,也是艾默生委婉说法的另一个例子:
愚蠢的一致性是心胸狭隘的怪物,
受到小政治家、哲学家和神学家的崇拜
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)