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

在下面的例子中,让我们假定要创建新员工的一组条目,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将保证在执行过程中没有其他的人能够改变什么。

事实上,这不完全准确,但是对于第一次接触事物处理的人来说是一个好的入门介绍。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值