MySQL 事务是一个整体,里面的命令要么都执行成功,要么都不成功。这样可以保证复杂业务的完整性。
如果单元中某条sql语句一旦执行失败或者产生错误,那么整个单元将会回滚(返回最初状态)。如果单元中的所有sql语句都执行成功的话,那么该事务也就被顺利执行。
需要注意的是在mysql中,常见的存储引擎有innodb、myisam,memory等。其中innodb支持事务(transaction),而myisam,memory等不支持事务。
原子性(Atomicity):
指事务是一个不可分割的最小工作单位,事务中的操作只有都发生和都不发生两种情况
一致性(Consistency):
事务必须使数据库从一个一致状态变换到另外一个一致状态。
隔离性(Isolation):
一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(Durability):
一个事务一旦提交成功,它对数据库中数据的改变将是永久性的,接下来的其他操作或故障不应对其有任何影响。
start transaction;
2. 执行多条命令
3. 提交或回滚
commit; # 提交成功,提交事务
rollback; # 执行失败,回滚事务
说明,在不同编程语言内,都可以通过数据库操作对象获取sql命令运行结果,并根据结果调用 commit 或 rollback 实现提交或回滚。