码迷,mamicode.com
首页 > 数据库 > 详细

关系型数据库---MySQL---事务

时间:2019-02-23 12:19:58      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:事务处理   必须   div   art   ati   isolation   mysq   重复   value   

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---事务

标签:事务处理   必须   div   art   ati   isolation   mysq   重复   value   

原文地址:https://www.cnblogs.com/anpeiyong/p/10422181.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!