mysql事务

1,什么是事务?

我们在实际处理某个问题的时候,需要多条sql语句在一起才能完成某个操作,这组sql语句的关系是,要不都执行成功,要不都执行失败,这个特性就是事务

2,事务的定义:

事务是指逻辑上的一组操作,组成这组操作的各个单元,要不全都成功要不全都失败,有了事务,可以保证数据在业务逻辑上是安全的

3,使用事务案例:

//在转账系统中,需要保证一个人将钱从帐号中移除,另一个人在帐号中增加某些金额,但是如果有一个步骤出错,这次转账失败(使用mysql的事务)

4,使用事务解决该问题的步骤:
(1)开启事务,应该在这组sql执行之前,开启事务
(2)正常执行我们的sql语句
(3)当sql语句执行完毕后,存在两种可能:
①全部成功,如果全部成功,我们执行的操作叫commit(将以上sql语句对数据库的影响添加到数 据库中)
②某些语句执行失败,如果某些sql语句执行失败,我们执行的操作叫rollback,将以上sql语句对 数据库的影响撤销

mysql> update bank set money=money-500 where nme='laohu';
ERROR 1054 (42S22): Unknown column 'nme' in 'where clause'
mysql> select * from bank;
+---------+--------+
| name    | money  |
+---------+--------+
| shaotuo | 3500.0 |
| laohu   | 3500.0 |
+---------+--------+
2 rows in set (0.00 sec)

mysql> rollback;
Query OK, 0 rows affected (0.05 sec)

mysql> select * from bank;
+---------+--------+
| name    | money  |
+---------+--------+
| shaotuo | 3000.0 |
| laohu   | 3500.0 |
+---------+--------+
2 rows in set (0.00 sec)

mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)

mysql> update bank set money=money+500 where name='shaotuo';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> update bank set money=money-500 where name='laohu';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from bank;//1、这里其实没有成功,在打开一个mysql窗口,查看就没有改变
+---------+--------+
| name    | money  |
+---------+--------+
| shaotuo | 3500.0 |
| laohu   | 3000.0 |
+---------+--------+
2 rows in set (0.00 sec)

mysql> commit;//2、执行这个之后就会真的提交到数据库,会改变
Query OK, 0 rows affected (0.05 sec)

mysql> select * from bank;
+---------+--------+
| name    | money  |
+---------+--------+
| shaotuo | 3500.0 |
| laohu   | 3000.0 |
+---------+--------+
2 rows in set (0.00 sec)

mysql>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值