事务是保证底层数据完整的重要手段,没有事务支持的数据库应用,那将非常脆弱。
事务是由一步或者几步数据库操作序列组成的逻辑执行单元,这些操作要么全部执行,要么全部放弃执行。
事务是DBMS的执行单位,不是任意的数据库操作序列都能成为事务。事务具有如下4个基本特征(ACID):
- 原子性(Atomicity):事务是应用中不可再分的最小逻辑执行体。
- 一致性(Consistency):事务执行的结果必须使数据库从一个一致性状态,变到另一个一致性状态。当数据库只包含事务成功提交的结果时,数据库处于一致性状态。
- 隔离性(Isolation):并发执行的事务之间不能相互影响,任何一个事务的内部操作对其他事务来说都是隔离的。
- 持续性(Durability):事务一旦提交,对数据库所做的任何改变都要记录到永久存储器中
MYSQL
的
事务
处理主要有两种方法。
1、用begin,rollback,commit来实现
begin 开始一个 事务
rollback 事务 回滚
commit 事务 确认
2、直接用set来改变 mysql 的自动提交模式
MYSQL 默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过
set autocommit=0 禁止自动提交,开启了事务
set autocommit=1 开启自动提交
来实现 事务 的处理。
1、用begin,rollback,commit来实现
begin 开始一个 事务
rollback 事务 回滚
commit 事务 确认
2、直接用set来改变 mysql 的自动提交模式
MYSQL 默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过
set autocommit=0 禁止自动提交,开启了事务
set autocommit=1 开启自动提交
来实现 事务 的处理。
MySQL默认关闭事务(即打开自动提交)。
事务回滚有两种方式:显示回滚和自动回滚。
- 显示回滚:使用rollback;
- 自动回滚:系统出错或者强行退出。
一个MySQL的命令行窗口代表一次连接Session,在该窗口中设置set autocommit = 0不会影响其他连接。此外,如果不想关闭整个窗口的自动提交,而只是想临时性地开始事务,则可以使用start tranction 或begin两个命令,它们都表示临时性地开始一次事务,处于start tranction 或begin后的DML不会立即生效,除非使用commit显示提交事务,或者执行DDL、DCL语句来隐式提交事务。
除此之外,MySQL还提供了savepoint来设置事务的中间点,可以让事务回滚到指定中间点。回滚到中间点因为依然处于事务之中,所以不会结束当前事务。
savepoint a;
rollback to a;