MySQL中是不是允许嵌套事务?

     2023-02-16     121

关键词:

【中文标题】MySQL中是不是允许嵌套事务?【英文标题】:Are nested transactions allowed in MySQL?MySQL中是否允许嵌套事务? 【发布时间】:2010-11-21 08:50:40 【问题描述】:

MySQL 是否允许使用嵌套事务?

【问题讨论】:

mysql 不支持嵌套事务 【参考方案1】:

不,但是

InnoDB 支持SAVEPOINTS

您可以执行以下操作:

CREATE TABLE t_test (id INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;

START TRANSACTION;

INSERT
INTO    t_test
VALUES  (1);

SELECT  *
FROM    t_test;

 id
---
  1

SAVEPOINT tran2;

INSERT
INTO    t_test
VALUES  (2);

SELECT  *
FROM    t_test;

 id
---
  1
  2

ROLLBACK TO tran2;

SELECT  *
FROM    t_test;

 id
---
  1

ROLLBACK;

SELECT  *
FROM    t_test;

 id
---

【讨论】:

这不是问题,“保存点”是一回事,“嵌套事务”支持才是真正的问题。见this link @arod:你能解释一下单线程上下文中的区别吗?谢谢! @Quassnoi 我提供的链接是为了表明现在支持嵌套事务。现在,保存点功能强大,但它们与嵌套的 BEGIN、COMMIT/ROLLBACK 不同(从编程上讲,命令方式),尽管您似乎很确定在“单线程上下文”中它们是等价的。我打算直接解决这个问题(3年后:) ... @arod:您知道您提供的链接与 MySQL 无关,不是吗? @arod 这个答案很好,唯一缺少的是“不,但是......”,如果你真的希望它完全满足这个问题。【参考方案2】:

来自 MySQL 文档:

事务不能嵌套。这是当您发出 START TRANSACTION 语句或其同义词之一时对任何当前事务执行的隐式提交的结果。 https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html

【讨论】:

如何在 PHP 中管理嵌套的数据库事务?

】如何在PHP中管理嵌套的数据库事务?【英文标题】:HowtomanagenesteddatabasetransactionsinPHP?【发布时间】:2014-11-2714:56:41【问题描述】:我有一个方法deleteUser(..)执行一个mysql查询并调用另一个方法logAction(..)调用另一个mysql查询。在... 查看详情

如何检查嵌套数据的更改是不是允许

】如何检查嵌套数据的更改是不是允许【英文标题】:Howtocheckifthechangeinnesteddataispermissible如何检查嵌套数据的更改是否允许【发布时间】:2017-07-1814:09:45【问题描述】:我们在前端的Web应用程序中有一个嵌套的JSON结构,例如Rows... 查看详情

嵌套事务(而不是并发事务)的默认隔离级别是多少?

】嵌套事务(而不是并发事务)的默认隔离级别是多少?【英文标题】:Whatisthedefaultisolationlevelacrossnestedtransactions(insteadofconcurrentones)?【发布时间】:2019-04-2414:14:01【问题描述】:Spring有3种典型的嵌套事务传播:REQUIRED、NEW和NEST... 查看详情

spring嵌套事务原理

参考技术ASpring采用保存点(Savepoint)实现嵌套事务原理Spring采用一个物理事务,但是结合着savepoint机制(MySql中称为保存点)实现一个事务中的指定范围提交。当某个方法将Spring事务传播级别设置为PROPAGATION_NESTED的时候,如果创建事... 查看详情

laravel嵌套事务transactions(代码片段)

Laravel嵌套事务transactions前言laravel嵌套事务transactions实现调用示例:代码分析:总结:前言关于mysql的事务嵌套可以查看这个地址:https://dev.mysql.com/doc/refman/8.0/en/implicit-commit.html里面有这么一句话Transactionscannotbenested.Thisisaconsequenc... 查看详情

mybatissqlsession嵌套使用bug

...源码,可以发现一个session对应着一个连接MySQL连接,所以嵌套的session应该是两个事务。并且batchexcutor模式下,session.flushstatement的时候,才会去写入mysqlio中,也就是执行flush的时候,才会在mysqlserver端查询到该事务。同时MySQL中也... 查看详情

Web 组件是不是允许嵌套 HTML 表单?

】Web组件是不是允许嵌套HTML表单?【英文标题】:DowebcomponentsallowfornestingofHTMLforms?Web组件是否允许嵌套HTML表单?【发布时间】:2016-02-1122:58:49【问题描述】:我很好奇WebComponents的工作是否可以在不违反therules的情况下摆脱嵌套H... 查看详情

mysql事物隔离级别rr还是rc好

...数据,所以又称脏读。此时:幻读,不可重复读和脏读均允许;READCOMMITTED:只能读取已经提交的数据;此时:允许幻读和不可重复读,但不允许脏读,所以RC隔离级别要求解决脏读;REPEATABLEREAD:同一个事务中多次执行同一个sele... 查看详情

事务是不是会停止 MySQL 中的所有竞争条件问题?

】事务是不是会停止MySQL中的所有竞争条件问题?【英文标题】:DoesatransactionstopallraceconditionproblemsinMySQL?事务是否会停止MySQL中的所有竞争条件问题?【发布时间】:2010-05-1107:29:35【问题描述】:考虑这种情况:开始交易使用auto... 查看详情

怎么避免mysql死锁

...死锁。2、大事务拆小。大事务更倾向于死锁,如果业务允许,将大事务拆小。3.在同一个事务中,尽可能做到一次锁定所需要的所有资源,减少死锁概率。4、降低隔离级别。如果业务允许,将隔离级别调低也是比较好的选择,... 查看详情

mysql事务隔离性与相关锁的总结(代码片段)

...重复读幻读读未提交可以出现可以出现可以出现读提交不允许出现可以出现可以出现可重复读不允许出现不允许出现可以出现序列化不允许出现不允许出现不允许出现注意点上述隔离级别都是这么定义的,但是InnoDB和Falcon存储引... 查看详情

NuSoap - addComplexType 中的嵌套数组是不是允许?

】NuSoap-addComplexType中的嵌套数组是不是允许?【英文标题】:NuSoap-NestedArrayinaddComplexTypeareallowed?NuSoap-addComplexType中的嵌套数组是否允许?【发布时间】:2014-09-1822:30:27【问题描述】:我需要从客户端接收这样的XML输入(包含2个... 查看详情

Azure 弹性数据库池是不是允许跨数据库事务?

】Azure弹性数据库池是不是允许跨数据库事务?【英文标题】:DoAzureElasticDatabasePoolsallowCrossDatabasetransactions?Azure弹性数据库池是否允许跨数据库事务?【发布时间】:2020-02-1218:33:37【问题描述】:我们有Stage数据库,其中包含存... 查看详情

vuejs 渲染功能是不是允许采用现有的嵌套 VNode 的插槽

】vuejs渲染功能是不是允许采用现有的嵌套VNode的插槽【英文标题】:DoesvuejsrenderfunctionallowadoptinganexistingnestedVNodeofslotvuejs渲染功能是否允许采用现有的嵌套VNode的插槽【发布时间】:2022-01-0914:52:12【问题描述】:我是vuejs渲染功... 查看详情

mysql数据库中默认事务隔离级别是?

...,B却没收到。  3、隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。  4、持久性(Durability)... 查看详情

mysql事务grant权限

事务mysql课堂笔记一、创建事务事务相当于将多个sql语句打包起来mysql事务四个原则ACID原则1.原子性要么都执行要么都不执行,一个事物就是一个整体2.一致性事物执行,前后数据保持一致,不存在数据丢失。3.隔离性在执行过程... 查看详情

mysql事务

...性简称:ACID(1).原子性事务是最小的执行单位,不允许分割。一个事务中的多组操作& 查看详情

mysql事务

...性简称:ACID(1).原子性事务是最小的执行单位,不允许分割。一个事务中的多组操作& 查看详情