服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - Mysql中的事务是什么如何使用

Mysql中的事务是什么如何使用

2020-01-20 14:38MYSQL教程网 Mysql

事务是逻辑上的一组操作,组成这组操作的各个单元,要不全都成功要不全都失败,这个特性就是事务,下面为大家介绍下Mysql中的事务的具体使用

什么是事务 

事务是逻辑上的一组操作,组成这组操作的各个单元,要不全都成功要不全都失败,这个特性就是事务 

注意: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 | 
+---------+--------+

延伸 · 阅读

精彩推荐
  • MysqlERROR: Error in Log_event::read_log_event()

    ERROR: Error in Log_event::read_log_event()

    ERROR: Error in Log_event::read_log_event(): read error, data_len: 438, event_type: 2 ...

    MYSQL教程网6412020-03-13
  • MysqlMySQL 数据备份与还原的示例代码

    MySQL 数据备份与还原的示例代码

    这篇文章主要介绍了MySQL 数据备份与还原的相关知识,本文通过示例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    逆心2972019-06-23
  • Mysql详解MySQL中的分组查询与连接查询语句

    详解MySQL中的分组查询与连接查询语句

    这篇文章主要介绍了MySQL中的分组查询与连接查询语句,同时还介绍了一些统计函数的用法,需要的朋友可以参考下 ...

    GALAXY_ZMY5442020-06-03
  • MysqlMySQL数据库varchar的限制规则说明

    MySQL数据库varchar的限制规则说明

    本文我们主要介绍了MySQL数据库中varchar的限制规则,并以一个实际的例子对限制规则进行了说明,希望能够对您有所帮助。 ...

    mysql技术网4192019-11-23
  • Mysql浅谈mysql 树形结构表设计与优化

    浅谈mysql 树形结构表设计与优化

    在诸多的管理类,办公类等系统中,树形结构展示随处可见,本文主要介绍了mysql 树形结构表设计与优化,具有一定的参考价值,感兴趣的小伙伴们可以参...

    小码农叔叔5242021-11-16
  • Mysql解决MySQl查询不区分大小写的方法讲解

    解决MySQl查询不区分大小写的方法讲解

    今天小编就为大家分享一篇关于解决MySQl查询不区分大小写的方法讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起...

    Veir_dev5592019-06-25
  • Mysqlmysql 不能插入中文问题

    mysql 不能插入中文问题

    当向mysql5.5插入中文时,会出现类似错误 ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xCE\xC4' for column ...

    MYSQL教程网5722019-11-25
  • MysqlMySQL锁的知识点总结

    MySQL锁的知识点总结

    在本篇文章里小编给大家整理了关于MySQL锁的知识点总结以及实例内容,需要的朋友们学习下。...

    别人放弃我坚持吖4362020-12-14