二十四、MySQL事务操作演示

1、事务

(1)事务简介:

(2)实际操作方式:

在执行MySQL语句时,系统默认自动提交,但是语句一旦出现报错,就可能导致数据出现大规模错误,所以我们要做的就是,将自动提交方式改为手动提交方式。

在改为手动提交之后,如果执行语句出现错误,数据库数据也不会发生更改,需要操作者确认提交,数据库数据才会发生更改。

(3)查看当前提交方式:

sql 复制代码
查看当前提交方式:
select @@autocommit;

2、操作案例:

建立一个数据库,存放着jom和kom的存款数据,jom存款10000元,kom存款5000元,现在jom给kom转账1000元,执行操作语句如下:

3、修改提交方式(方式一)

(1)错误语句:

此时为自动提交方式:

在这个错误语句中,第三条SQL语句不能正常执行,但前两条语句已经执行,这将导致jom的账户余额变为9000元,kom的账户余额不会发生改变。

(2)手动提交:

在(1)中,这样的错误是十分致命的,这将会导致数据的严重缺失,所以将提交方式设置为手动提交是必要的。

sql 复制代码
将提交方式设置为手动提交
set @@autocommit=0;

(3)手动提交示例:

执行如下语句:

sql 复制代码
select * from account where name='jom';
update account set money=money-1000 where name='jom';
update account set money=money+1000 where name='kom';

再次执行(1)中错误语句之后,然后再去刷新数据库,发数据库的数据并不会发生改变,这时需要执行commit;语句,数据才会发生改变。

sql 复制代码
提交数据:
commit;

执行结果:

(4)回滚操作:

回滚语句:

sql 复制代码
回滚操作:
rollback;

4、修改提交方式(方式二)

(1)手动提交:

(2) 提交方式:

在这种提交方式中,不需要设置commit参数,只需要执行如下语句即可:

sql 复制代码
# 第一步,开启事务
start transaction ;

(3)实际操作:

sql 复制代码
# 方式二:
# 第一步,开启事务
start transaction ;
# 第二部,执行指令
select * from account where name='jom';
update account set money=money-1000 where name='jom';
程序执行报错 ...
update account set money=money+1000 where name='kom';
select @@autocommit;
# 第三步,提交事务
commit;
# 第四步,回滚事务,结束当前事务
rollback;
相关推荐
2601_952196363 小时前
计算机科学与技术专业应届生投商业分析岗,需要哪些额外能力?
数据库·oracle
皮皮学姐分享-ppx3 小时前
地级市、省级人才政策强度测算(2000-2025)
大数据·数据库·人工智能·百度·高考
晚安日记wanna3 小时前
大厂禁 JOIN 的真正原因,拆到第四层才清楚
数据库·后端·面试
java1234_小锋3 小时前
Redis 宣布正式接入 AI
数据库·人工智能·redis
这个DBA有点耶4 小时前
数据融合平台的下一代形态:数据库内核自己就能融合,为什么还要ETL?
数据库·架构·aigc
数据库小学妹4 小时前
MySQL大表怎么优化?2亿行表的分区归档与冷热分离实战
数据库·mysql·分库分表·分区表·数据库运维·冷热分离
91刘仁德4 小时前
RAG实战 - 向量数据库(Milvus)
数据库·milvus
资深技术分享员4 小时前
Geejing WebBuilder 日志、在线用户、系统监控,出问题时的三个第一现场
java·运维·数据库
煎饼皮皮侠4 小时前
设计一个Web版数据库管理平台(之六):SQL执行监听器 —— 日志、监控与审计
sql·数据库平台
我是小白呀4 小时前
n8n 实战:把 AcmeFlow 的 READY 事件接到 CRM 通知
数据库·人工智能·workflow