什么是事务?
事务是逻辑上的一组操作,组成这组操作的各个单元,要不全都成功要不全都失败,这个特性就是事务
注意:mysql数据支持事务,但是要求必须是innoDB存储引擎
解决这个问题:
mysql的事务解决这个问题,因为mysql的事务特性,要求这组操作,要不全都成功,要不全都失败,这样就避免了某个操作成功某个操作失败。利于数据的安全
如何使用:
(1)在执行sql语句之前,我们要开启事务 start transaction;
(2)正常执行我们的sql语句
(3)当sql语句执行完毕,存在两种情况:
1,全都成功,我们要将sql语句对数据库造成的影响提交到数据库中,committ
2,某些sql语句失败,我们执行rollback(回滚),将对数据库操作赶紧撤销
(注意:mysql数据支持事务,但是要求必须是innoDB存储引擎)
mysql> create table bank(name varchar(20),money decimal(5,1))engine=innodb defau
lt charset=utf8;
mysql> inset into bank values('shaotuo',1000),('laohu',5000);
mysql> select*from bank;
+---------+--------+
| name | money |
+---------+--------+
| shaotuo | 1000.0 |
| laohu | 5000.0 |
+---------+--------+
------没有成功“回滚”执行rollback
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.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update bank set moey=money-500 where name='laohu';
ERROR 1054 (42S22): Unknown column 'moey' in 'field list'
mysql> rollback; //只要有一个不成功,执行rollback操作
Query OK, 0 rows affected (0.01 sec)
mysql> select*from bank;
+---------+--------+
| name | money |
+---------+--------+
| shaotuo | 1000.0 |
| laohu | 5000.0 |
+---------+--------+
------成功之后 进行commit操作
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.01 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> commit; //两个都成功后执行commit(只要不执行commit,sql语句不会对真实的数据库造成影响)
Query OK, 0 rows affected (0.05 sec)
mysql> select*from bank;
+---------+--------+
| name | money |
+---------+--------+
| shaotuo | 1500.0 |
| laohu | 4500.0 |
+---------+--------+
Mysql中的事务是什么如何使用
2020-01-20 14:38MYSQL教程网 Mysql
事务是逻辑上的一组操作,组成这组操作的各个单元,要不全都成功要不全都失败,这个特性就是事务,下面为大家介绍下Mysql中的事务的具体使用
延伸 · 阅读
- 2020-01-20Mysql中的触发器简单介绍及使用案例
- 2020-01-20mysql如何实现多行查询结果合并成一行
- 2020-01-20mysql服务无法启动报错误1067解决方法(mysql启动错
- 2020-01-20开启bin-log日志mysql报错的解决方法
- 2020-01-20关于sql和mysql对于别名不能调用的一些理解
- 2020-01-16Java 通过JDBC连接Mysql数据库
精彩推荐
- Mysql
MySQL中使用case when 语句实现多条件查询的方法
今天在一个应用中使用到了一个比较特殊的数据查询要求。需要的朋友可以参考下。 ...
- Mysql
FROM_UNIXTIME 格式化MYSQL时间戳函数
对MYSQL没有进行过深入的研究,基础知识匮乏,一遇到问题只能手册,看来要把MYSQL的学习安排进时间表了。 ...
- Mysql
MySQL实例crash的案例详细分析
这篇文章主要给大家介绍了关于MySQL实例crash的相关资料,文中通过示例代码的非常详细,对大家学习或者使用mysql具有一定的参考学习价值,需要的朋友们...
- Mysql
解析Mysql备份与恢复简单总结与tee命令的使用介绍
本篇文章是对Mysql备份与恢复简单总结与tee命令的使用进行了详细的分析介绍,需要的朋友参考下 ...
- Mysql
MySQL中使用自定义变量 编写偷懒的UNION示例
以下是对MySQL中使用自定义变量,编写一个UNION的示例进行了详细的介绍,需要的朋友可以过来参考下 ...
- Mysql
mysql 8.0.12 安装配置方法并修改密码
这篇文章主要为大家详细介绍了mysql 8.0.12 安装配置,及修改密码的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...
- Mysql
mysql安装后添加gbk字符集的方法
mysql安装后添加gbk字符集的方法,有需要的朋友可以参考下 ...
- Mysql
Mysql中limit的用法方法详解与注意事项
mysql的数据一般都是用limit控制数量,它的使用方法也是需要注意的。 ...