SQL 中 COMMIT 和 ROLLBACK 的区别17 Mar 2025 | 4 分钟阅读 COMMIT 和 ROLLBACK 是 SQL 事务中用于执行或撤销事务的两个术语。在深入了解 COMMIT 和 ROLLBACK 之前,我们需要先理解“事务”这个术语。事务是指一组逻辑上相关的 SQL 语句或查询,它们被视为一个单一的工作单元。每个事务都以一个特定的任务开始,并在该组任务完成后结束。如果其中任何一个任务失败,整个事务就会失败。为了在 SQL 中完成一个事务,我们需要执行各种操作,例如:开始事务、设置事务、提交、回滚以及设置事务的保存点。在这里,我们将只讨论 COMMIT 和 ROLLBACK 这两个术语及其在 SQL 中的区别。 ![]() 什么是 SQL COMMIT?COMMIT 是 SQL 命令,用于在事务表或数据库中将当前事务或数据库语句所做的更改永久保存。它表示事务的成功完成。如果我们成功执行了事务语句或简单的数据库查询,并且希望将这些更改永久生效,我们就需要执行commit 命令来保存这些更改,这些更改将对所有用户永久可见。此外,一旦在数据库中执行了 commit 命令,我们就无法恢复到执行第一条语句之前的状态。 语法 考虑包含以下记录的 Employees 表
在上面的示例中,我们将从EMPLOYEES表中删除所有年龄为 27 的记录,然后执行COMMIT查询,将更改永久保存,并使其对数据库中的所有用户可见。 按照以下 SQL 查询操作 之后,使用select命令从 Employees 表中检索所有记录。 输出
在上面的表中,当 COMMIT 查询执行后,它将永久保存 EMPLOYEES 表的更改,并且这些更改对所有数据库用户可见。 什么是 SQL ROLLBACK?SQL ROLLBACK 命令用于在事务执行期间发生任何错误时回滚当前事务的状态。在事务中,错误可能包括系统故障、停电、事务执行不正确、系统崩溃等。通常,rollback 命令会将当前事务回滚到其先前状态或第一个语句。只有在用户尚未对当前事务或语句执行COMMIT命令的情况下,才能执行 rollback 命令。 语法 考虑包含以下记录的 Employees 表
在上面的示例中,我们将从EMPLOYEES表中删除所有年龄为 27 的记录,然后执行ROLLBACK查询以从 EMPLOYEES 表中检索被删除的记录。 按照以下 SQL 查询操作 表 - EMPLOYEES
在上表中,Employees 表中删除了两行年龄为 27 的记录,它们满足年龄条件。然后执行 ROLLBACK 查询来撤销这些操作。 之后,使用select命令从 Employees 表中检索所有记录。 输出 表 - EMPLOYEES
COMMIT 和 ROLLBACK 之间的区别
结论Commit 命令确保事务更改被永久保存在数据库或表中以完成事务。相反,rollback 命令用于在事务期间撤销所有更改,以应对任何类型的问题,如停电、错误数据,或者将当前事务恢复到其初始阶段。 下一主题DDL vs DML |
我们请求您订阅我们的新闻通讯以获取最新更新。