环球科创网

2022年01月03日整理发布:MySQL学习之事务控制

更新时间:2022-01-04 08:20:55

导读 我给大家讲讲MySQL学习的事务控制。相信朋友们也应该很关心这个话题。现在给朋友们说说MySQL学习的事务控制。边肖还收集了关于MySQL学习的

我给大家讲讲MySQL学习的事务控制。相信朋友们也应该很关心这个话题。现在给朋友们说说MySQL学习的事务控制。边肖还收集了关于MySQL学习的事务控制的相关信息。我希望你看到后会喜欢。

什么是交易控制?

事务是指作为一个逻辑工作单元执行的一系列操作,所有这些操作要么成功,要么失败。事务确保多个数据的修改作为一个单元来处理。

在Mysql中,只有使用Innodb存储引擎的数据库或表才能支持事务来维护数据库的完整性,确保一批sql语句被执行或不执行来管理INSERT、UPDATE和DELETE语句。如果张三在ATM上给李四转账,100元主要在银行业务系统中进行两步数据变更操作:

从张三的账户中减去100元给李四的账户并增加。100元问如果操作1成功,操作2失败会怎么样?

相关免费学习推荐:mysql视频教程

交易的四个特征

如果数据库支持事务,那么数据库必须具有ACID的四个特征,即原子性、一致性、隔离性和持久性。

原子的:事务必须是原子的工作单元。事务中包含的所有操作要么已完成,要么不一致。交易完成后,所有数据必须保持一致。隔离:事务独立运行。多个事务相互隔离,互不干扰。事务100%隔离会牺牲速度持久性:事务完成后,其对系统的影响是永久的MySQL事务控制。

默认情况下,MySQL会自动提交事务,即INSERT、UPDATE和DELETE的每一条SQL语句都会立即提交。因此,要启动事务,可以使用start transaction或begin,或将自动提交的值设置为0。

方法1:在这里插入图片描述

方法2:在这里插入图片描述

例子

登录数据库,使用学生数据库并查看所有数据表,使用学生;显示表格;在这里插入图片描述

2.创建bank_account数据表,插入两条记录,将张三的余额字段值设置为1000。

创建表格银行账户(

自动递增主键,

名称VARCHAR(30) COMMENT' name ',

Balance DECIMAL(18,2)COmment ' account balance ');插入bank _ account (ID,姓名,余额)值(1,'张三',0);插入到bank _ account (ID,姓名,余额)值(2,'李四',0);UPDATE bank_account SET余额=余额1000 WHERE id=1;在这里插入图片描述

3.检查默认的自动提交值。

SELECT @ @自动提交;在这里插入图片描述

4.检查bank_account数据表中的所有记录。

选择*从银行账户;在这里插入图片描述

5.启动事务控制并执行两条SQL语句

开始交易;UPDATE bank _ account SET balance=balance-100 WHERE id=1;UPDATE bank_account SET余额=余额100 WHERE id=2;COMMIT在这里插入图片描述

6.此时检查数据表的内容。

选择*从银行账户;在这里插入图片描述

7.再次启动事务控制。插入两条相同的SQL语句,但将提交更改为回滚。

开始交易;UPDATE bank _ account SET balance=balance-100 WHERE id=1;UPDATE bank_account SET余额=余额100 WHERE id=2;回滚;在这里插入图片描述

8.再次检查数据表的内容,发现回滚后数据没有变化。

选择*从银行账户;在这里插入图片描述

注:本文是博主MySQL研究的总结。不支持商业转载。请注明出处!如果你对MySQL学习感兴趣和了解,欢迎随时和博主交流~

更多免费学习推荐:mysql教程(视频)

以上就是MySQL学习中事务控制的详细内容!

来源:php中文网站

免责声明:本文由用户上传,如有侵权请联系删除!