关于mysql事务的问题
代码如下:
代码中有2个$dbh->rollBack(); 为啥循环只执行了1次?
<?php
$dsn = 'mysql:dbname=test;host=192.168.0.72' ;
$user = 'root' ;
$password = 'root' ;
try {
$dbh = new PDO ( $dsn , $user , $password );
} catch ( PDOException $e ) {
echo 'Connection failed: ' . $e -> getMessage ();
}
for($i=0;$i<=20;$i++){
printf('loop:%d<br>',$i);
trigger($dbh);
}
function trigger($dbh){
try{
$dbh -> beginTransaction ();
$rs=$dbh->exec("update account set money=money-10 where user_id=100");
printf('exec:%d<br>',$rs);
printf('start rollback:%d<br>',__LINE__);
$dbh->rollBack ();
//这里为了测试,故意抛出异常
throw new Exception('errror 24');
$dbh -> commit ();
} catch (Exception $e) {
printf('start rollback:%d<br>',__LINE__);
$dbh->rollBack();
echo 'Connection failed2: ' . $e -> getMessage ();
}
}
?>
代码中有2个$dbh->rollBack(); 为啥循环只执行了1次?
...全文
相关推荐
MySQL嵌套事务所遇到的问题
本文主要探讨了在MySQL中使用嵌套事务可能会遇到的问题,以及对嵌套事务的理解误区。在MySQL数据库系统中,虽然支持嵌套事务的特性,但在实际应用中并不常见。嵌套事务通常是指在一个事务内部开启另
第31讲:MySQL事务的并发问题以及事务的隔离级别
此时已经模拟出了幻读的现象,事务A第一次查询xm=小江的数据时,发现并没有查询到内容,此时事务A就想在表中新增xm=小江的数据了,但是就在这个时候,事务B在表中新增了xm=小江的数据,并且已经提交了数据,比事务A快了一步,事务A在插入xm=小江的数据时,就发现报错了提示数据已经存在了,事务A就该疑问了,我查询的时候并没有这个数据呀,再次查询确实没有这个数据,再次执行写入依旧无法写入,这就是幻读的现象。
Mysql事务并发问题解决方案
此外,优化事务设计,减少不必要的事务,或者使用队列服务进行异步处理,也能有效地缓解并发问题。总之,处理MySQL事务并发问题需要综合考虑数据一致性、系统性能和业务需求。
MYSQL事务回滚的2个问题分析
如果事务中的某个操作失败,整个事务会被回滚,撤销之前成功执行的操作,以保持数据的一致性。下面我们将深入探讨两个关于MySQL事务回滚的问题。### 问题1:为什么AUTO_INCREMENT没有回滚?
MySQL长事务问题[项目代码]
MySQL中的长事务指的是那些执行时间较长的事务。在InnoDB存储引擎中,这种事务类型会引起若干性能问题。长事务的问题主要包括Undo Log的大量积累,这会降低查询性能。


基础编程
