SQL中COMMIT和ROLLBACK之间的区别
作者:
Laura McKinney
创建日期:
1 四月 2021
更新日期:
12 可能 2024
内容
COMMIT和ROLLBACK是用于执行,执行或撤消事务的两个事务语句。事务可以具有一系列查询,也可以具有修改数据库的更新语句。 COMMIT和ROLLBACK之间的根本区别在于它们的工作方式。如果交易成功执行,则 承诺 语句允许数据库中的事务修改永久生效。另一方面,如果由于某种原因的交易确实成功执行,则 回滚 语句撤消所有更新,从当前事务的第一条语句开始。
让我们借助下面显示的比较表来讨论SQL中的Commit和ROLLBACK语句之间的区别。
- 比较表
- 定义
- 关键差异
- 结论
比较表
比较基础 | 承诺 | 回滚 |
---|---|---|
基本的 | COMMIT验证当前事务所做的修改。 | ROLLBACK删除当前事务所做的修改。 |
影响 | 执行COMMIT语句后,该事务不能被ROLLBACK。 | 一旦执行了ROLLBACK,数据库就达到了其先前的状态,即在执行事务的第一条语句之前。 |
发生 | 成功执行事务时,将发生COMMIT。 | 当事务在执行过程中中止时,将发生ROLLBACK。 |
句法 | 承诺; | 回滚; |
COMMIT的定义
承诺 是一条SQL语句,表示 成功的 完成交易。每当事务完成其执行而没有任何中断时,该事务对数据库所做的修改将变为永久性。这意味着在执行第一条语句之前,数据库无法恢复其之前的状态。
COMMIT语句的语法如下:
承诺;
随着交易的最后一条语句结束,交易变为 部分承诺。接下来, 恢复协议 确保即使系统出现故障也不会无法使数据库永久生效。一经检查, 提交点 的交易已达成,最后交易进入 承诺状态。一旦事务进入提交状态,就无法回滚,并且新事务开始。
ROLLBACK的定义
像COMMIT一样 回滚 也是一个SQL语句,它表示事务具有 不 完成了 成功地。因此,交易是 流产 撤消交易所做的更改。执行ROLLBACK之后,将保留当前事务所做的任何修改。
ROLLBACK的语法如下:
回滚;
如果在执行事务期间发生错误,则必须进行事务ROLLBACK。该错误可能是系统故障,断电,事务处理语句中的错误,系统崩溃。在电源故障或系统崩溃的情况下,当系统再次重新启动时,将发生ROLLBACK。仅当尚未执行COMMIT时,才会发生ROLLBACK。
- SQL的COMMIT和ROLLBACK语句之间的主要区别在于,执行COMMIT语句会使当前事务进行的所有修改成为永久性的。另一方面,执行ROLLBACK会擦除当前事务所做的所有修改。
- 一旦COMMIT语句执行了,该事务所做的修改就不能被ROLLBACK。但是,一旦执行了ROLLBACK语句,数据库将达到其先前状态。
- 成功执行事务语句后,将执行COMMIT。但是,当事务未成功执行时,将执行ROLLBACK。
结论:
为确保将交易所做的更改永久保存在数据库中,请在交易成功完成后使用COMMIT。如果事务在执行过程中遇到任何错误,然后撤消事务完成的更改,则使用ROLLBACK。