如何使用 Node.js 在 MySQL 中进行事务处理

2025年3月15日 | 阅读 3 分钟

事务处理 在数据库管理中,是指在一次或多次 SQL 调用中完成的单个协调工作。事务的承诺是,所有操作要么成功执行,要么都不执行,从而帮助数据库保持其正常状态。在 Node.js 中,MySQL 更高效地管理包含一个或多个相关查询的操作,尤其是在处理不应半途而废的金融交易时,因为这可能导致数据库完整性中断。

语法

既然我们在 Node.js 中工作,让我们看看如何在 MySQL 中使用事务。我们主要使用 mysql 或 mysql2 包。语法涉及以下步骤

  • 开始事务: 使用 START TRANSACTION 或 BEGIN 语句开始一个事务。
  • 执行查询: 在当前事务中执行一个或多个查询。
  • 提交或回滚: 因此,根据所有查询的成功情况,我们可以使用 COMMIT 命令成功提交事务,也可以使用 ROLLBACK 命令将所有对关系所做的更改回滚。

参数

  • Connection: 指的是通过连接到 MySQL 数据库获得的对象。
  • BeginTransaction(): 用于创建一个新事务。
  • Query(sql, params): 在事务中执行与 SQL 相关的操作。
  • Commit(): 保存当前事务在 数据库 中所做的所有更改。
  • Rollback(): 回滚事务,擦除在此事务期间受影响的所有更改。

示例

假设在一种情况下,我们希望将 100 美元从 Bob 的账户转移到 Alice 的账户。此操作涉及两个步骤:从 Bob 的账户扣除 100 美元,并将 100 美元计入 Alice 的账户。协同效应的概念表明,这两个操作要么都必须成功,要么都不成功。

输出

 
Funds transferred successfully.   

如果在任何查询期间发生错误,输出将是

优点

几个优点如下

  • 数据完整性: 无论是否存在错误或系统中断,事务都有助于数据库始终处于一致状态。
  • 原子性: 它们也受到事务边界的严格隔离,不允许更新表内的一些字段,这可能会导致数据状态不一致。
  • 并发控制: 这些有助于控制对数据的并发访问,以避免所谓的脏读或更新丢失。

用例

  • 金融交易: 确保账户之间的金钱转移以正确的方式进行。
  • 批处理: 它以一种所有语句都必须执行或都不执行的方式,执行多个明显相互依赖的语句。
  • 订单处理: 在电子商务应用程序中,它管理库存的变化和订单录入。

结论

总之,事务 通过 Node.js 中的事务,在使用 Node.js 从 MySQL 获取数据进行复杂数据库操作时,确保数据完整性和一致性。它是证明数据正确性的基本要素,并对管理不同且复杂的操作有好处。当以逻辑方式处理事务的开始、提交或回滚时,开发人员就不会允许他们的应用程序生成或允许可能导致数据不一致的错误,从而使应用程序可靠。