MySQL——事务与存储过程(一)事务管理(2)事务的提交

现实生活中,许多操作都是需要用户确认的,例如在删除一个文档时,当选择删除时,会弹出一个提示对话框,包含两个按钮"确定"和"取消",如果单击"确定"按钮该文档才会删除。同理,在数据库中,有些命令的使用也是需要被确认的,例如事务中的操作就需要用户确认,当用户确认提交后,事务中的操作才会执行成功,这个过程就是手动提交的过程,接下来针对事务的提交进行详细的讲解。

为了说明事务的提交方式为手动提交,接下来,在前面的基础上进行操作,这时的a账户有 900 元钱,b账户有 1100 元钱,开启一个事务,使用 UPDATE 语句实现由 b账户向a账户转 100元钱的转账功能,具体语句如下:

sql 复制代码
START TRANSACTION;

UPDATE account SET money=money+100 WHERE name='a';

UPDATE account SET money=money-100 WHERE name='b';

上述语句执行成功后,可以使用 SELECT 语句来查询 account 表中的余额,查询结果如下:

sql 复制代码
mysql> SELECT * FROM account;
+----+------+-------+
| id | name | money |
+----+------+-------+
|  1 | a    |  1000 |
|  2 | b    |  1000 |
+----+------+-------+
2 rows in set (0.01 sec)

从上述结果可以看出,在事务中实现了转账功能。此时,退出数据库然后重新登录,并查询数据库中各账户的余额信息,查询结果如下:

sql 复制代码
mysql> SELECT * FROM account;
+----+------+-------+
| id | name | money |
+----+------+-------+
|  1 | a    |   900 |
|  2 | b    |  1100 |
+----+------+-------+
2 rows in set (0.00 sec)

从上述结果可以看出,事务中的转账操作没有成功,这是因为在事务中转账成功后还没有提交事务就退出数据库了,由于事务中的语句不能自动提交,因此当前的操作。被自动取消了。接下来再次执行上述语句,然后使用 commit 语句来提交事务,具体语句如下:

sql 复制代码
START TRANSACTION;

UPDATE account SET money=money+100 WHERE name='a';

UPDATE account SET money=money-100 WHERE name='b';

COMMIT;

上述语句执行成功后,退出数据库然后再重新登录,使用 SELECT 语句查询数据库中各账户的余额信息,查询结果如下:

sql 复制代码
mysql> SELECT * FROM account;
+----+------+-------+
| id | name | money |
+----+------+-------+
|  1 | a    |  1000 |
|  2 | b    |  1000 |
+----+------+-------+
2 rows in set (0.00 sec)

从上述结果可以看出,事务中的转账操作成功了。需要注意的是,由于事务中的操作都是手动提交的,因此在操作完事务时,一定要使用 COMMIT 语句提交事务,否则事务操作会失败。

相关推荐
这个DBA有点耶1 小时前
数据库数据同步解决方案怎么选?6款主流工具横向对比与信创选型指南
数据库·架构·dba
刃神太酷啦1 小时前
Redis 核心进阶:哨兵、集群、缓存问题与分布式锁详解----《Hello Redis!》(6)
linux·c语言·数据库·c++·redis·分布式·缓存
小雷信息医学2 小时前
不会写复杂代码也能发 SCI?手把手教你用 InSpireR 交互系统一键提取、合并与导出临床科研宽表【第三章】
数据库
程序员梅雨2 小时前
MySQL底层探索(一):什么是脏页?什么是冷热分离?
mysql·面试
旺仔不是程序员2 小时前
复合索引最左前缀原则:PostgreSQL 的 WHERE 为什么必须命中第一列
数据库·后端·sql
旺仔不是程序员2 小时前
字段类型不一致:PostgreSQL 报错与索引失效的第一元凶
数据库·后端·sql
白远山2 小时前
货运跑腿搬家平台开发实战:从需求分析到落地部署指南
数据库·数据挖掘·需求分析
geovindu2 小时前
sql: Data Modeling Patterns
数据库·sql·设计模式·sqlserver
上海蓝色星球3 小时前
蓝色星球NG-AIOS新型AI工业操作系统重磅发布——以本体智能为内核,重构“AI+制造“新范式
大数据·数据库·人工智能·机器人
瀚高PG实验室3 小时前
瀚高数据库如何克隆表
数据库·sql·postgresql·瀚高数据库