首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql:多查询回滚

问Mysql:多查询回滚
EN

Stack Overflow用户
提问于 2010-12-29 23:07:50
回答 3查看 2.6K关注 0票数 2

我在PHP脚本中有三个以上的MySql查询由预定任务触发。如果查询捕获到错误,脚本将抛出异常并回滚Mysql查询。它工作得很好。

但是,如果第一个查询工作正常,但第二个查询不工作,则抛出异常,它会回滚第二个查询,但不会回滚第一个查询。

我对单个查询使用begin_trans()、commit和rollback(),因为有时我需要回滚一个查询,有时需要回滚所有查询。有没有回滚一个查询或所有查询的方法?

提前感谢

更新:

我让它正常工作了,在begin_trans()、commit和rollback()中没有问题,一个查询的数据库连接配置与其他查询不同,没有任何注释的疯狂代码!

EN

回答 3

Stack Overflow用户

发布于 2010-12-29 23:10:23

唯一需要回滚的是写操作(插入、更新或删除)。我假设您使用“查询”这个词来表示除SELECT操作之外的其他含义。

如果您希望多个SQL语句一起成功或失败,则需要指定一个transaction。

更新:

现在我很困惑,难怪你会困惑。

事务是一个要么全有要么全无的命题。在我看来,您混淆了两种不同的用例:一种是在一个事务中使用一个查询,另一个是在一个事务中使用多个查询。将这两者结合起来会使您和您的用户感到困惑。

一旦提交了事务,就不能回滚。因此,您必须下定决心:要么操作A是它自己事务的一部分,要么在另一个事务中与B、C和D分组。但不是两个都有。

票数 4
EN

Stack Overflow用户

发布于 2010-12-29 23:23:40

回滚将应用于当前事务中的所有查询。

问题更新后编辑

MySQL目前不支持嵌套事务,所以要么全有要么全无。您只能回滚事务中的所有查询或提交所有查询(成功的查询)。

票数 1
EN

Stack Overflow用户

发布于 2012-11-08 16:04:09

回滚的类型完全取决于如何定义事务。

这取决于业务用例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4555203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档