首页 » PHP和MySQL Web开发(原书第4版) » PHP和MySQL Web开发(原书第4版)全文在线阅读

《PHP和MySQL Web开发(原书第4版)》13.3 事务

关灯直达底部

事务是确保数据库一致的机制,尤其是在发生错误或服务器崩溃情况下确保数据库一致的机制。在接下来的内容中,我们将学习事务的概念,以及如何使用InnoDB实现事务。

13.3.1 理解事务的定义

首先,让我们定义事务这个术语。事务是一个或一系列的查询,这些查询可以保证能够在数据库中作为一个整体全部执行或者全部不执行。这样,数据库才能在无论事务是否完成的情况下保持一致状态。

要了解该功能的重要性原因,可以考虑一个银行数据库。假设希望将资金从一个账户转移到另一个账户的情况。这个动作将涉及从一个账户删除资金并且将这些资金放置在另一个账户内,这样至少涉及两个查询。这两个查询的同时执行或不执行都是至关重要的。如果从一个账户中取出资金,而在将这些资金存入到另一个账户之前,发生了停电,那会出现什么情况呢?资金会丢失么?

我们可能听说过ACID原则。ACID是描述事务安全性的4个需求:

■Atomicity(原子性)——一个事务必须是原子性的;也就是说,它必须是作为一个整体完全执行或者不执行。

■Consistency(一致性)——一个事务必须能够使数据库处于一致的状态。

■Isolation(孤立性)——未完全完成的事务不能被数据库的其他用户所见;也就是说,在事务完全完成之前,它们都是孤立的。

■Durability(持续性)——一旦写入到数据库后,事务必须是永久的而且持续的。

一个事务被永久地写入到数据库中称作该事务被提交了。一个没有写入到数据库中的事务(因此数据库将状态重置到事务开始之前的状态)称作事务被回滚了。