MySQL 事务

MySQL 事务概述

MySQL 事务是一个整体,里面的命令要么都执行成功,要么都不成功。这样可以保证复杂业务的完整性。

如果单元中某条sql语句一旦执行失败或者产生错误,那么整个单元将会回滚(返回最初状态)。如果单元中的所有sql语句都执行成功的话,那么该事务也就被顺利执行。

需要注意的是在mysql中,常见的存储引擎有innodb、myisam,memory等。其中innodb支持事务(transaction),而myisam,memory等不支持事务。

事务的四个特性(ACID)

原子性(Atomicity):

指事务是一个不可分割的最小工作单位,事务中的操作只有都发生和都不发生两种情况

一致性(Consistency):

事务必须使数据库从一个一致状态变换到另外一个一致状态。

隔离性(Isolation):

一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

持久性(Durability):

一个事务一旦提交成功,它对数据库中数据的改变将是永久性的,接下来的其他操作或故障不应对其有任何影响。

事务的实现步骤

1. 开启事务

start transaction;

2. 执行多条命令

3. 提交或回滚


commit; # 提交成功,提交事务
rollback; # 执行失败,回滚事务

说明,在不同编程语言内,都可以通过数据库操作对象获取sql命令运行结果,并根据结果调用 commit 或 rollback 实现提交或回滚。