一、什么是事务?
事务就是一段sql语句的批处理,但是这个批处理是一个atom(原子),不可分割,要么都执行,要么回滚(rollback)都不执行。
通俗点举个例子:
有一天张三给李四要转钱,那么银行的数据库就要把张三的账户减去元(-),李四的账户就要增加元(+),这两个更新语句必须作为一个整体来执行,不然就会出现张三账户扣掉了元钱而李四账户并没有增加元钱,然而这种情况很难找出原因,所以就需要这俩个操作作为一个整体要么一起失败都没有执行,要么就一起成功一个增加元、一个减少元,这就是事务在实际中的具体体现。
二、事务的四个特性
1)、原子性(atomicity):原子性是指整个数据库事务是不可分割的工作单位
2)、一致性(consistency):一致性指事务将数据库从一种状态转变为下一种一致的状态。在事务开始之前和事务结束之后,数据库的完整性约束没有被破坏。
3)、隔离性(isolation):一个事务的影响在该事务提交之前对其他事务都不可见---通过锁来实现。
4)、持久性(durability):事务一旦提交,其结果就是永久性的。
三、务依赖InnoDB存储引擎
事务的执行是需要存储引擎来支持的,那么存储引擎是什么呢?
存储引擎顾名思义就是数据库如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。
主要存储引擎:Myisam、InnoDB、MEMORY、Archive、BDB等,其中MyISAM与InnoDB的区别如下:
修改存储引擎的方法为,如图:
1、首先右键打开设计表菜单
2、选择“选项”选项卡,在第一行中的引擎下拉菜单中选择InnoDB即可;
四、执行事务的三步骤
我们还是继续刚才的转账的案例,
1、开启事务:
Starttransaction
2、执行sql语句组
updateaccountsetmoney=money+whereid=2
updateaccountsetmoney=money-whereid=1
3、