SQL 中的 Commit

17 Mar 2025 | 5 分钟阅读

Commit 和 Rollback 是 SQL 命令,在实现事务性语句时经常使用,它们使用户能够完成或撤销 SQL 事务。在理解 SQL 中 Commit 命令的功能之前,我们必须首先理解什么是事务。事务是一个逻辑术语,它包含排列好的指令或查询来完成一个交易。每笔交易都以一个特定的目标开始。它开始于执行一项特定的任务和特定的任务组,以确保目标得以完成。

如果执行事务所需的任何任务失败,则整个事务将被视为失败。要使 SQL 中的事务完成,所有查询和任务都必须完全执行。执行任何事务所采取的步骤如下:

  1. 启动事务
  2. 设置事务
  3. 提交事务
  4. 回滚和保存点事务

在本教程中,我们将只讨论 SQL 中 Commit 命令的实现。

SQL 中的 Commit 是什么?

Commit 是一个 SQL 命令,它使用户能够永久保存关系数据库或事务表中的当前事务或数据库语句。为了确保事务成功执行并将修改应用到数据库,这是必要的。一旦在事务中执行了 Commit 命令,事务期间发生的更改对所有有权访问数据库的用户来说就成为永久性的。由于更改已永久保存在数据库中,因此无法返回到交易开始前的数据库的先前状态。

Commit 语法

在数据库中提交数据的语法如下:

Commit 的实现

考虑一个 Employee 表,它存储员工 ID、姓名、年龄和地址。表如下:

将数据添加到下表中:

输出

Commit in SQL

假设用户想要删除姓氏为 Varun 的员工的记录。在表中执行删除操作后,用户可以执行 Commit 语句以永久保存数据库中的更改,供所有可以访问它的用户使用。执行上述操作的查询如下:

为了确保更改在数据库上永久提交,用户可以执行 Select 查询以获取数据库中所有剩余的条目。查询如下:

输出

Commit in SQL

在上述表中,当执行 COMMIT 查询时,它会永久保存 EMPLOYEES 表的更改,这些更改对所有数据库用户可见。

SQL 中的 COMMIT 如何工作?

COMMIT 是执行事务时的基本命令,它使用户能够保存 DBMS 中特定事务所做的修改。它确保在提交数据库更改之前所做的所有修改都是永久性的。它还确保所有修改都可以回滚。

传统的命令,如 COMMIT 和 ROLLBACK,在 MySQL 中遵循 ACID 属性。ACID 属性包括:

原子性 (Atomicity):此属性确保事务是否已完成并执行。事务不能部分执行。例如,当用户从一个账户向另一个账户转账时。事务中的所有任务都必须完整完成。这意味着资金将从第一个账户中扣除并计入第二个账户,否则转账将不会发生。也就是说,资金既不会从账户中扣除,也不会存入账户。

一致性 (Consistency):事务应保持数据库的一致性。这意味着如果在数据库表中执行了更改,也应在关联的表中执行。例如,如果用户在线预订了火车票,那么预订所需的详细信息应在数据库的所有关联表中进行更新。这确保了存储的信息在整个数据库中保持一致。

隔离性 (Isolation):它确保一个事务所做的更改不会影响其他事务。

持久性 (Durability):一旦事务被提交,更改就是永久性的和持久的。例如,即使系统崩溃,添加到数据库的新记录仍然会保留。

如何在 SQL Server 中使用 COMMIT?

在 SQL Server 中实现 COMMIT 语句的语法与在 SQL 中使用的语法不同。

SQL Server 中 COMMIT 的语法

在 SQL Server 中实现 COMMIT 的语法如下:

上述语法以执行 BEGIN TRANSACTION SQL 语句开始,因为它允许用户启动一个新事务。下一步是使用一组 SQL 语句。这些语句决定了事务中执行的任务。一旦所有 SQL 语句都执行完毕,下一步就是保存事务。语法中执行的最后一条语句是 COMMIT transaction,它确保事务之后的所有更改都已永久保存在数据库中。

SQL COMMIT 语句的实现

在实现 COMMIT 语句之前,用户需要一个表来执行 SQL 命令。执行以下 SQL 语句以在数据库中创建 Employee 表:

将数据添加到上面的 Employee 表中

使用 DELETE 命令实现 COMMIT 语句

使用 INSERT 命令实现 COMMIT 语句

输出

Commit in SQL