多个PDO一起进行事务处理可以么?

beijing990101 2013-07-11 03:17:31
如题,如果有几个语句要作为一个事务提交,那么对PDO设置一下事务机制,在最后commit,在有异常的地方rollback就可以了。

但是如果这几个语句中要用到两个PDO呢?也还是一样的把这两个PDO在一起commit,在一起rollback就可以了么?有没有什么应该注意的(´・_・`)
...全文
204 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
seared2008 2014-02-25
  • 打赏
  • 举报
回复
引用 4 楼 beijing990101 的回复:
[quote=引用 2 楼 seared2008 的回复:] 是否是pdo的嵌套提交,嵌套回滚?
对,我大概就是这个意思。[/quote] 你做的什么业务需要这么嵌套,建议你更换一下设计思路。比如用程序逻辑去控制
jdgdf566 2013-07-13
  • 打赏
  • 举报
回复
如果不是嵌套不行,那么嵌套也不行。
beijing990101 2013-07-13
  • 打赏
  • 举报
回复
我说的可能不太明白,大概是这样的
try{
	$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
	$dbh->beginTransaction();

	$dbh2->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
	$dbh2->beginTransaction();
	//此处做一些sql操作
	
	$dbh->commit();
	$dbh2->commit();
	$dbh=null;
	$dbh2=null;
}catch(PDOException $e){
	$dbh->rollBack();
	$dbh2->rollBack();
	$dbh=null;
	$dbh2=null;
	exit('数据库操作失败');
}
不知道能不能按我想象的达到效果?
beijing990101 2013-07-13
  • 打赏
  • 举报
回复
引用 1 楼 hnxxwyq 的回复:
不太理解你的意思,你的意思是说有2个pdo源要同时进行事务么?
是的
beijing990101 2013-07-13
  • 打赏
  • 举报
回复
引用 2 楼 seared2008 的回复:
是否是pdo的嵌套提交,嵌套回滚?
对,我大概就是这个意思。
lazyboy_wu 2013-07-12
  • 打赏
  • 举报
回复
不太理解你的意思,你的意思是说有2个pdo源要同时进行事务么?
jdgdf566 2013-07-12
  • 打赏
  • 举报
回复
不能。PDO里面的连接句柄不是静态的,而是属于对象的。因为是两个不同的连接,即使账户、数据库、表都相同,也是两个连接。跟两个php页面是一样的。
seared2008 2013-07-12
  • 打赏
  • 举报
回复
是否是pdo的嵌套提交,嵌套回滚?

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧