SQL中COMMIT和ROLLBACK之间的区别

作者: Laura McKinney
创建日期: 1 四月 2021
更新日期: 12 可能 2024
Anonim
Урок 10 : Транзакции   BEGIN TRANSACTION , ROLLBACK , COMMIT -  (MS SQL)
视频: Урок 10 : Транзакции BEGIN TRANSACTION , ROLLBACK , COMMIT - (MS SQL)

内容


COMMIT和ROLLBACK是用于执行,执行或撤消事务的两个事务语句。事务可以具有一系列查询,也可以具有修改数据库的更新语句。 COMMIT和ROLLBACK之间的根本区别在于它们的工作方式。如果交易成功执行,则 承诺 语句允许数据库中的事务修改永久生效。另一方面,如果由于某种原因的交易确实成功执行,则 回滚 语句撤消所有更新,从当前事务的第一条语句开始。

让我们借助下面显示的比较表来讨论SQL中的Commit和ROLLBACK语句之间的区别。

  1. 比较表
  2. 定义
  3. 关键差异
  4. 结论

比较表

比较基础承诺回滚
基本的COMMIT验证当前事务所做的修改。ROLLBACK删除当前事务所做的修改。
影响执行COMMIT语句后,该事务不能被ROLLBACK。一旦执行了ROLLBACK,数据库就达到了其先前的状态,即在执行事务的第一条语句之前。
发生成功执行事务时,将发生COMMIT。当事务在执行过程中中止时,将发生ROLLBACK。
句法承诺;回滚;

COMMIT的定义

承诺 是一条SQL语句,表示 成功的 完成交易。每当事务完成其执行而没有任何中断时,该事务对数据库所做的修改将变为永久性。这意味着在执行第一条语句之前,数据库无法恢复其之前的状态。

COMMIT语句的语法如下:

承诺;


随着交易的最后一条语句结束,交易变为 部分承诺。接下来, 恢复协议 确保即使系统出现故障也不会无法使数据库永久生效。一经检查, 提交点 的交易已达成,最后交易进入 承诺状态。一旦事务进入提交状态,就无法回滚,并且新事务开始。

ROLLBACK的定义

像COMMIT一样 回滚 也是一个SQL语句,它表示事务具有 完成了 成功地。因此,交易是 流产 撤消交易所做的更改。执行ROLLBACK之后,将保留当前事务所做的任何修改。

ROLLBACK的语法如下:

回滚;

如果在执行事务期间发生错误,则必须进行事务ROLLBACK。该错误可能是系统故障,断电,事务处理语句中的错误,系统崩溃。在电源故障或系统崩溃的情况下,当系统再次重新启动时,将发生ROLLBACK。仅当尚未执行COMMIT时,才会发生ROLLBACK。

  1. SQL的COMMIT和ROLLBACK语句之间的主要区别在于,执行COMMIT语句会使当前事务进行的所有修改成为永久性的。另一方面,执行ROLLBACK会擦除当前事务所做的所有修改。
  2. 一旦COMMIT语句执行了,该事务所做的修改就不能被ROLLBACK。但是,一旦执行了ROLLBACK语句,数据库将达到其先前状态。
  3. 成功执行事务语句后,将执行COMMIT。但是,当事务未成功执行时,将执行ROLLBACK。

结论:

为确保将交易所做的更改永久保存在数据库中,请在交易成功完成后使用COMMIT。如果事务在执行过程中遇到任何错误,然后撤消事务完成的更改,则使用ROLLBACK。