所以这就是......
//我开始交易 $ mysqli = new mysqli(...);
//开始交易 $ mysqli->自动提交(FALSE);
如果每个准备好的查询都返回true,它将($ mysqli-> commit())else $ mysqli-> rollback
我不知道交易将自动提交的原因是什么
我已经完成了3个多重连接的事务,他们回滚了...这个没有...... mysql是否支持具有单个连接查询的事务?
解决了...如果来自不同表的查询是相互依赖的,就像我的情况一样,并且您需要强大的数据访问安全性,请为您打开的每个连接将autocommit设置为false,为每个失败的bussness逻辑设置var为false,如果任何失败,回滚每一组查询,否则comit evry查询... 是的,事务是按照连接执行的,当我说mysql做了一些多个conn事务的回滚时,还有一些管理回滚的东西
重新编辑:ofc这不会像普通交易那样工作......如果发生系统崩溃,数据将被存储,直到崩溃的那一刻
答案 0 :(得分:6)
事务内的所有查询必须位于同一连接上。如果您有三个连接,则打开三个事务(假设它们未处于自动提交模式)。
如果您确实需要分布式事务,则必须使用MySQL's XA Transactions - 但如果您正在处理多个数据库中的事务(或者,某些其他非数据库事务)。