登录
首页 >  数据库 >  MySQL

事务嵌套

来源:SegmentFault

时间:2023-02-24 16:17:10 445浏览 收藏

哈喽!今天心血来潮给大家带来了《事务嵌套》,想必大家应该对数据库都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到MySQL、PHP,若是你正在学习数据库,千万别错过这篇文章~希望能帮助到你!

mysql 事务如果出现嵌套会怎么样了?在MVC 的开发模式下, 大伙经常会在model层 封装事务,如果 model 层有互相调用的话,很容易出现事务嵌套,那么事务嵌套会出现什么问题呢? 那么应该如何设计结构避免出现事务嵌套么?本次着重解决第一个问题。

时序 事务一 事务二
1 start transaction;
2 insert into test set id = 2;
3 select * from test;
4 start transaction;
5 select * from test;

命令行按照以上时序执行的时候会发现,时序3 的select 没有id = 2 的数据; 但是 时序 5 的时候出现了 id = 2的数据;因此可以初步断定,事务嵌套的时候,start transaction 具有类似于commit的提交功能。实时确实如此,参照MySQL嵌套事务的讨论; 不仅 start transaction 具有引起 commit 提交的功能,下列语句同样会引起commit

ALTER FUNCTION  
ALTER PROCEDURE  
ALTER TABLE  
BEGIN  
CREATE DATABASE  
CREATE FUNCTION  
CREATE INDEX  
CREATE PROCEDURE  
CREATE TABLE  
DROP DATABASE  
DROP FUNCTION  
DROP INDEX  
DROP PROCEDURE  
DROP TABLE  
UNLOCK TABLES  
LOAD MASTER DATA  
LOCK TABLES  
RENAME TABLE  
TRUNCATE TABLE  
SET AUTOCOMMIT=1  
START TRANSACTION 

参考文献:

MySQL嵌套事务的讨论

终于介绍完啦!小伙伴们,这篇关于《事务嵌套》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布数据库相关知识,快来关注吧!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>