什么是事务?
在大多数环境中,事务处理其实就是一个业务过程,它由一组组合成逻辑工作单元的数据库操作组成,通常需要跨对象操作,或访问多个资源的数据
如:
1、在 A 表中插入新的记录。
2、在 B 表中插入新的记录。
3、更新 C 表某几条记录
....等一系列操作
如果运行过程中数据库系统没有遇到错误,事务中的所有的修改都将生效,永久性提交到数据库。如果系统遇到错误或发生崩溃,则事务中所有的操作都会回滚(ROLLBACK),不会对数据库里数据作出任何修改。
一句话就是:事务中所有的的操作,要么全部生效,要么全部不生效。
事务的 ACID 属性,担保一个事务是永远不会不完整,数据永远不会不一致,并发事务是独立的,一个事务的效果是持久的。
#原子性(ATOMICITY):
一个事务要被完全的无二义性的做完或撤消。在任何操作出现一个错误的情况下,构成事务的所有操作的效果必须被撤消,数据应被回滚到以前的状态。
#一致性(CONSISTENCY):
一个事务应该保护所有定义在数据上的不变的属性(例如完整性约束)。在完成了一个成功的事务时,数据应处于一致的状态。换句话说,一个事务应该把系统从一个一致状态转换到另一个一致状态。举个例子,在关系数据库的情况下, 一个一致的事务将保护定义在数据上的所有完整性约束。
#隔离性(ISOLATION):
在同一个环境中可能有多个事务并发执行,而每个事务都应表现为独立执行。串行的执行一系列事务的效果应该同于并发的执行它们。这要求两件事:
1。在一个事务执行过程中,数据的中间的(可能不一致)状态不应该被暴露给所有的其他事务。
2。两个并发的事务应该不能操作同一项数据。数据库管理系统通常使用锁来实现这个特征。
#持久性(DURABILITY): 一个被完成的事务的效果应该是持久的。