事务是访问并可能更新各种数据项的一个程序执行单元,“一荣俱荣,一损俱损”,这句话就很好地体现了事务的思想,一个SQL语句集,要么所有都执行成功,要么所有都执行失败,事务必须满足以下4个性质:
①原子性(atomicity):组成一个事务的多个数据库操作是一个不可分割的原子单元,只有当所有操作都执行成功时,整个事务才能提交,否则,已经执行的任何操作都必须撤销,也就是回滚;
②一致性(consistency):事务操作成功后,数据库所处的状态和它的业务规则是一致的,即数据不会被破坏。比如,从账户A转账100元到账户B,,假设在转账前,账户A的余额为300,账户B的余额为200,那么无论操作成功与否,A和B的余额和都应该是500,是不变的;
③隔离性(isolation):多个事务可能会出现并发执行,但系统保证,它们之间不会互相产生干扰(准确地说,并非要求做到完全无干扰),每个事务都感觉不到系统中有其它事务在并发地执行,数据库规定了多种事务隔离级别,不同隔离级别对应不同的干扰程度,隔离级别越高,数据一致性越好,但是并发性越弱;
③持久性(durability):一个事务成功完成后,它对数据库的改变必须是永久的,即使出现系统故障,也必须能够通过某种机制恢复数据。
这些性质通常称为ACID特性。