我自己的理解是,beginTransaction commit rollback 是针对数据库,a.php执行了beginTransaction ,b.php文件同时访问数据库也会进入事务,在此期间,b.php中执行的sql也进入了事务中,a.php 执行commit/rollback,后,在此期间b.php中的sql才会被提交或回滚对吗?
还有,如果a.php 执行了beginTransaction ,还没有提交或回滚,b.php有执行beginTransaction ,可以生效吗?
难道你的a.php和b.php都是用的同一个事务?如果说用的同一个事务,那么确实如你所说
你的MySQL数据库的设置的隔离级别是啥啊?
如果隔离级别是serizlizable,即串行化:该级别根本不允许多事务并发执行,只能顺序执行,对其它页面没有任何影响;
如果隔离级别是repeatable read,即可重复读:当使用该级别时,即使别的事务修改了数据并提交了,原来的事务依然不会读取到被修改的值,读取到的值仍然和第一次读取到的值相同,也就是说,事务一旦开始,多次查询一个数据,会得到同样的值。会出现幻读的情况,对其它页面有可能产生影响
每个beginTransaction互不干涉