您的位置:首页 > 移动开发 > Objective-C

Executing a batch in a transaction--PHP DATA OBJECT(PDO)事务处理中的批量操作

2006-12-08 21:27 796 查看
在下面的例子中,让我们假定要创建新员工的一组条目,23是这个新员工的ID。

另外还要插入该员工的基本资料,我们也需要记录他的薪水。

很简单地做两个独立的更新,调用PDO::beginTransaction() 和 PDO::commit() 将其封装,我们就可以保证没有其他人可以看见这些改变直到它们完成。

如果在这个过程中有错误发生,catch语句块回滚事务处理开始后所有的变化,并且输出一条错误信息。

 


<?php


try {


  $dbh = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2', 


      array(PDO::ATTR_PERSISTENT => true));


  echo "Connected ";


  $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);




  $dbh->beginTransaction();


  $dbh->exec("insert into staff (id, first, last) values (23, 'Joe', 'Bloggs')");


  $dbh->exec("insert into salarychange (id, amount, changedate) 


      values (23, 50000, NOW())");


  $dbh->commit();


  


} catch (Exception $e) {


  $dbh->rollBack();


  echo "Failed: " . $e->getMessage();


}


?> 

 

在一个事务处理中没有对更新查询的限制,你也可以发送复杂的查询来提取数据,然后用这些信息来构件更多的更新和查询语句。
当事物处理被激活时,PDO将保证在执行过程中没有其他的人能够改变什么。

事实上,这不完全准确,但是对于第一次接触事物处理的人来说是一个好的入门介绍。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php object exception db2