关系型数据库---MySQL---事务
Posted anpeiyong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关系型数据库---MySQL---事务相关的知识,希望对你有一定的参考价值。
1、概述
1.1 事务:在对业务相关的一系列数据进行操作时,需要保证数据操作的完整性(要么全部成功、要么全部失败);
1.2 mysql中支持事务的存储引擎是:Innodb;
1.3 事务用来管理insert、update、delete语句;
1.4 事务必须满足的4个条件(ACID):
1.1.1 Atomicity(原子性)
一个事务的所有操作,要么全部成功、要么全部失败
1.1.2 Consistency(一致性)
在事务开始之前、事务结束之后,数据库的完整性没有遭到破坏
1.1.3 Isolation(隔离性)
数据库允许多个并发事务同时对数据进行读写和修改,隔离性可以防止多个事务执行时由于交叉执行而产生数据的不一致;
事务的隔离级别:读未提交read uncommitted、读提交read committed、可重复读repeatable read、串行化Serializable;
1.1.4 Durability(持久性)
事务处理完成后,对数据的修改是永久性的;
2、事务控制语句
begin(start transaction): 显示开启事务
commit(commit work): 事务提交(事务提交后对数据进行的修改称为永久性)
rollback(rollback work): 事务回滚(撤销之前对数据库的所有操作)
savepoint 保存点名称: 在事务中创建一个保存点(一个事务中可有多个savepoint)
release savepoint 保存点名称: 删除一个事务中的保存点(如果事务中不存在保存点,会抛出异常)
rollback to 保存点名称: 把事务回滚到保存点
set transaction: 设置事务的隔离级别(Innodb存储引擎支持的隔离级别:读未提交read uncommitted、
读提交read committed、可重复读repeatable read、串行化Serializable)
set autocommit=0 禁止事务自动提交(关闭自动提交后,从下一条指令开始开启新的事务,需要使用commit或rollback结束该事务)
set autocommit=0 开启事务自动提交
3、案例
【注意】:
MySQL默认事务是自动提交的、通过begin或者set autocommit=0来禁止事务自动提交;
//每个命令后必须加分号,不然报语法错误
BEGIN; INSERT INTO `user`(name,age) VALUES(‘lili‘,27); INSERT INTO `user`(name,age) VALUES(‘lili‘,28); ROLLBACK;
BEGIN; INSERT INTO `user`(name,age) VALUES(‘lili‘,27); INSERT INTO `user`(name,age) VALUES(‘lili‘,28); COMMIT;
SET autocommit=0; INSERT INTO `user`(name,age) VALUES(‘lili‘,27); INSERT INTO `user`(name,age) VALUES(‘lili‘,28); COMMIT;
以上是关于关系型数据库---MySQL---事务的主要内容,如果未能解决你的问题,请参考以下文章