900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > mysql语句事务回滚_mysql语句 事务处理回滚的问题。

mysql语句事务回滚_mysql语句 事务处理回滚的问题。

时间:2021-03-15 18:02:41

相关推荐

mysql语句事务回滚_mysql语句 事务处理回滚的问题。

mysql_query(“BEGIN”);

$ck_id = M(‘ods’)->add($public);

foreach ($datas as $k => $val) {

$saveData = M('odo')->add($val);

}

由于插入到odo这个表的数据我是用 foreach循环插入多条数据,怎么判断这些数据全部插入成功了呢?要是有一条没有成功,就做回滚处理。

if($ck_id && $saveData){

mysql_query("COMMIT");

$this->success("数据提交成功","__GROUP__/Warehouse/outbound");

}else{

mysql_query("ROLLBACK");

$this->error("数据回滚,请重新提交");

}

mysql_query(“END”);

如果循环了5条数据,怎么判断 $saveData 知道5条数据都插入成功了呢?需要做一个计数器吗?在循环之前 定义一个变量 $count = 0;

每插入成功一条就$count+1;

类似这样的

$count = 0;

foreach ($datas as $k => $val) {

$saveData = M('odo')->add($val);

if($saveData>0) {

$count++;

}

}

if($ck_id && $count==5) {

回滚处理…..

}

这样可以吗?谁有什么好的方法啊

通常会把事务处理写在try-catch 结构里,当add()返回错误,直接抛出异常,catch里就可以捕获到异常,然后做相应的回滚和日志记录。

还有你的开启事务不能那样写,框架底层数据库驱动不一定是用mysql扩展函数写的,而且mysql扩展函数已经不建议使用了,而用 mysqli或pdo。

thinkphp 都有相应的数据库操作方法,应该使用其封装的方法。

你的方法是可以的,也可以改成有一个不成功就rollback和跳出循环。

mysqli貌似有回滚的接口吧。

判断保存后是否有影响行数,如果没有就rollback

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。