何一步操作失败,则都会导致双方陷入尴尬的境界,试想当用户选购商品,付款操作完成后,用户选择在发货过程中取消订单。这时商家并没有得到货款将取消操作,如果不应用事务处理,则用户在取消订单操作过程后,商家仍然继续将用户所订购的商品发送给用户,这会导致一些不愉快的争端。故在整个交易过程中,必须采用事务来对网上交易进行回滚操作。
在网上交易流程过程中,商家与用户的交易可以被认为是一个事务处理过程,如果在交易流程中存在一个环节失败,都可能导致双方交易的失败。如前面事务定义所说,所有这些流程都应该被成功执行,在MySQL中如果有任何命令失败,都会导致所有操作命令被撤销。系统返回未操作前的状态,即回滚到初始状态。添加到购物车、在线付款、商家发货等构成了一个基本的事务。整个交易流程可以被看作一个完整的单元,用于实现整体事务。
通过InnoDB和BDB类型表,MySQL事务能够完全满足事务安全的ACID测试。但是并不是所有表类型都支持事务,如MyISAM类型表就不能支持事务,只能通过伪事务对表实现事务处理。
说明
ACID指出每个事务型RDBMS必须遵守的4个属性,即原子性、一致性、孤立性和持久性。