MySQL数据库----事务处理

事物处理

 一、 什么是事务

     一组sql语句批量执行,要么全部执行成功,要么全部执行失败

二、为什么出现这种技术

  为什么要使用事务这个技术呢? 现在的很多软件都是多用户,多程序,多线程的,对同一个表可能同时有很多人在用,为保持数据的一致性,所以提出了事务的概念。这样很抽象,举个例子: 

A 给B 要划钱,A 的账户-1000元, B 的账户就要+1000元,这两个update 语句必须作为一个整体来执行,不然A 扣钱了,B 没有加钱这种情况很难处理。

三、事物的特性 

  80年代中国人结婚四大件:手表、自行车、缝纫机、收音机(三转一响)。要把事务娶回家同样需要四大件,所以事务很刻薄(ACID),四大件清单:原子性(Atom)、一致性(Consistent)、隔离性(Isolate)、持久性(Durable)。ACID就是数据库事务正确执行的四个特性的缩写。

  • 原子性:要么不谈,要谈就要结婚!

    对于其数据修改,要么全都执行,要么全都不执行。

  • 一致性:恋爱时,什么方式爱我;结婚后还得什么方式爱我;

    数据库原来有什么样的约束,事务执行之后还需要存在这样的约束,所有规则都必须应用于事务的修改,以保持所有数据的完整性。

  • 隔离性:闹完洞房后,是俩人的私事。

    一个事务不能知道另外一个事务的执行情况(中间状态)

  • 持久性:一旦领了结婚证,无法后悔。

    即使出现致命的系统故障也将一直保持。不要告诉我系统说commit成功了,回头电话告诉我,服务器机房断电了,我的事务涉及到的数据修改可能没有进入数据库。

另外需要注意:

  • 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
  • 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
  • 事务用来管理 insert,update,delete 语句
四、事务控制语句:
  • BEGIN 或 START TRANSACTION;显式地开启一个事务;

  • COMMIT;也可以使用COMMIT WORK,不过二者是等价的。COMMIT会提交事务,并使已对数据库进行的所有修改称为永久性的;

  • ROLLBACK;有可以使用ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;

  • SAVEPOINT : 保存点,可以把一个事物分割成几部分.在执行ROLLBACK 时 可以指定在什么位置上进行回滚操作.

注意: SET AUTOCOMMIT=0 ;禁止自动提交 和 SET AUTOCOMMIT=1 开启自动提交.

五、例子: 鲁班转账给后羿

1.创建表 

1
2
3
4
5
create  table  account(
     id  int (50)  not  null  auto_increment  primary  key ,
     name  VARCHAR (50)  not  null ,
     money  DOUBLE (5,2)  not  NULL
);

2.插入数据

1
insert  into  account ( name ,money)  values ( '鲁班' ,250),( '后羿' ,5000);

3.执行转账

1
2
3
4
5
6
7
8
9
10
start  transaction -- 开启事物
  --  执行sql语句操作
  update  account  set  money = money - 500  where  id = '1' ;  
  update  account  set  money = money+500  where  id =  '2' ;
 
commit ;   -- 手动提交事物
rollback -- 回滚事物
 
--  查看结果
select  from  account;

 4.保存点使用

1
2
3
4
5
6
7
8
9
START  TRANSACTION  ;
 
insert  into  account ( name ,money)  values ( '李元芳' ,1000);
 
SAVEPOINT s1;  -- 设置保存点
 
insert  into  account ( name ,money)  values ( '张桂枝' ,1500);
 
ROLLBACK  to  s1;  -- 事物回滚到保存点<br>COMMIT; --提交事物

转载于:https://www.cnblogs.com/TheLand/p/8488625.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值