1、一致性:将事务中所做的操作捆绑成一个原子单元,即对于事务所进行的数据修改等操作,要么全部执行,要么全部不执行。
2、原子性:事务在完成时,必须使所有的数据都保持一致状态,而且在相关数据中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构都应该是正确的。
3、隔离性:由并发事务所做的修改必须与任何其他事务所做的修改相隔离。事务查看数据时数据所处的状态,要么是被另一并发事务修改之前的状态,要么是被另一并发事务修改之后的状态,即事务不会查看由另一个并发事务正在修改的数据。这种隔离方式也叫可串行性。
4、持久性:事务完成之后,它对系统的影响是永久的,即使出现系统故障也是如此。
在不考虑隔离性会引发安全问题:脏读、不可重复读、幻读。
事务隔离级别:read_unconmited read_conmited repeatable_read serializable
脏读:一个事务读取了另一个事务改写但未提交的数据,一旦回滚,读到的数据是无效的。
不可重复读:在同一个事务中,多次读取同一个数据返回的结果不同。
幻读:是对插入记录而言,读取了几行之后,发现了别的事务插入的数据。
事务的传播行为:结局业务层方法之间相互调用的问题。
propagation_required :支持当前事务,如果不存在,就新建一个(两个事务在一起)
propagation_required_new :如果有事务存在,挂起当前事务,创建一个新事务(两个事务不在一起)
propatation_nested :如果当前事务存在,则嵌套事务执行