SQL 中的自动提交命令和补偿事务
顾名思义,自动提交语句用于避免在每个 SQL 语句后显式提及提交命令。提交语句本身在每个 SQL 语句之后由服务器执行。每个 SQL 语句都被视为不同的事务。在自动提交模式下执行的 SQL 语句无法回滚。
自动提交命令:
SQL 中有四个自动提交命令,它们是:
- 设置自动提交 -
通过执行此特定命令,自动提交状态变为 ON(如果最初为 OFF)。此命令本身最初由 SQL 服务器执行。执行后,commit 语句本身会在每个 SQL 语句之后执行。这里每个语句都是一个单独的事务。 - 设置自动提交关闭 –
该指令与第一条指令正好相反。执行此操作后,自动提交状态更改为 OFF。现在,用户需要在任何需要的地方明确提及提交语句。这里Commit() 或 rollback() 完成一个事务。 - SET AUTOCOMMIT INT_VALUE –
此指令用于限制语句的数量,语句本身由服务器自动提交。例如,在执行以下命令后,每 9 个事务自动提交保持 ON,然后它自己关闭。设置自动提交 9 - 显示自动提交 –
该语句用于确定自动提交的当前状态,以便数据库用户可以根据需要进行更改。因此,该语句只有两种可能的结果,ON 或 OFF。这完全取决于数据库的类型以及需要在数据库中执行的操作,即保持状态为 ON 还是 OFF。因为如果自动提交为 ON,更改或修改将无法撤消。如果 AUTO-COMMIT 为 ON,则 ROLLBACK 语句无效。在这里,补偿事务的概念出现了。是的,您无法撤消更改,但可以编写补偿事务来恢复数据库的先前状态。
让我们来看看补偿交易实际上是什么。
SQL 中的补偿事务:
补偿事务只不过是能够撤消不完整或不一致事务更改的数据库操作列表。补偿事务有助于恢复数据库先前的一致状态。让我们考虑一个简单的例子。用户不小心从数据库中删除了重要记录。因此,补偿事务只不过是在数据库中再次插入该记录。此外,补偿事务并不能确保数据库初始状态的完全恢复,因为其他事务有可能同时开始执行。