繁体   English   中英

如果对查询使用多个连接,mysql事务将正常工作吗?

[英]Will a mysql transaction work if multiple connections are used for the queries?

所以这里......

//我开始交易$ mysqli = new mysqli(...);

//开始事务$ mysqli-> autocommit(FALSE);

  • 这是一个选择准备好的带有自己的数据库连接的stmt
  • 这是一个插入准备好的带有自己的数据库连接的stmt
  • 这是与上面的db conn一起准备的stmt
  • 插入新的conn
  • 插入新的conn
  • 插入新的conn

如果每个准备好的查询都返回true,它将返回($ mysqli-> commit())否则为$ mysqli-> rollback

我不知道该交易会自动提交的原因

我已经用3个多个连接完成了一些事务,但它们回滚了……这不是... mysql是否支持通过单个连接查询的事务?

解决...如果像我这样的情况下来自不同表的查询是相互依存的,并且您需要强大的数据访问安全性,请为您打开的每个连接将autocommit设置为false,为每个失败的业务逻辑将var设置为false,如果任何失败,回滚每组查询,否则返回evry查询...是的,事务是按连接执行的,当我说mysql对某些多个conn事务进行了回滚时,还有其他东西可以管理回滚

重新编辑:ofc不会像正常事务一样工作...万一发生系统崩溃,数据将一直存储到崩溃时刻

事务内的所有查询必须位于同一连接上。 如果您有三个连接,则将打开三个事务(假设它们未处于自动提交模式)。

如果您确实需要分布式事务,则必须使用MySQL的XA事务 -但是只有在要处理多个数据库中的事务(或者其他一些非数据库事务)时才真正需要这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM