一、MYSQL事务
1、事务
(1)概念
事务是一个用户定义的数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。事务可以是一条sql语句,一组sql语句或者整个程序
在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务
InnoDB 存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ 和 SERIALIZABLE
(2)特性(ACDI)
原子性(Atomicity):一个事务中的操作要么全做,要么全不做
一致性(Consistence):事务执行的结果必须使数据库从一个一致性状态转换为另一个一致性状态
持久性(Durability):一个事务一旦提交对数据库的操作就是永久性的。(已经存储到了磁盘)
隔离性(Isolation):并发执行的事务之间互不干扰
(3)好处
事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。例如:转账操作中,转账方金额减少与收款方金额增加就是一个事务,因为要保证总金额的不变。
2、MYSQL的事务
(1)如果用户不对数据库进行操作,默认情况下事务直接开始并提交(将对数据库的更新写到磁盘)
例如:在login数据表中执行以下插入操作后:
INSERT login VALUES('mysql','事务')
执行插入语句后,数据库中已经存在数据
(2)手动操作事务的开始和提交
先开启事务:
START TRANSACTION
执行插入语句:
INSERT login VALUES('星期一','Monday')
此时执行查询语句,依旧能够查询到插入的数据:
但是,此时并未对事务进行提交操作,数据并未进入磁盘。
如果执行回滚语句,插入的数据将会消失(从事务开启到回滚之间的操作均被撤销):
ROLLBACK
但是,如果执行的是提交语句,数据将会被写入磁盘。