事务是数据库提供的一个特性,是一个由一系列操作组成的逻辑单元,这些操作要么全部执行,要么全部不执行。事务在数据库中用于保证数据的一致性、完整性和正确性,尤其是在多个用户并发操作时,能够确保系统不会处于不一致的状态。
其有4大基本特点,分别是:
原子性:事务是一个原子操作,要么全部执行,要么全部不执行。也就是说,在事务执行过程中,数据库中的变化要么完全生效,要么完全不生效。
一致性:事务执行前后的数据库状态必须是一致的。事务开始时,数据库必须满足所有约束,事务执行后,也必须保持数据的完整性,不能出现脏数据。
持久性:一旦事务提交,它对数据库的改变是永久性的,即使系统崩溃也不应该丢失数据。
隔离性:事务的执行不应受到其他事务的干扰,数据库应该确保一个事务的执行对其他事务是隔离的。即使多个事务并发执行,它们也应该仿佛是串行执行一样。
一个事务从开始到结束有几个常见的状态:
-
开始“”事务的开始。此时,数据库开始跟踪事务中的所有操作。
-
进行:事务处于活动状态,正在执行操作。
-
提交:事务完成,并且所有操作已经成功执行。数据库将事务中的所有修改永久保存。
-
回滚:事务中发生错误或被用户手动撤销时,数据库会回滚到事务开始之前的状态,撤销事务中所做的所有操作。