嵌套Sql查询函数对PHP事务的影响?

嵌套Sql查询函数对PHP事务的影响?,php,mysql,transactions,Php,Mysql,Transactions,我将编写一个长sql事务,并考虑编写可重用的sql函数,所以我的问题是,我可以用这种方式编写事务吗 try { // First of all, let's begin a transaction $db->beginTransaction(); // A set of queries; if one fails, an exception should be thrown $db->query('first query'); UpdateE

我将编写一个长sql事务,并考虑编写可重用的sql函数,所以我的问题是,我可以用这种方式编写事务吗

try {
    // First of all, let's begin a transaction
    $db->beginTransaction();

    // A set of queries; if one fails, an exception should be thrown
    $db->query('first query');
    UpdateEmp();
      //anothre sql query function, i put him in another function so that i 
      //can use it seperately

    $db->query('second query');

    UpdateProject();

    $db->query('third query');


    // If we arrive here, it means that no exception was thrown
    // i.e. no query has failed, and we can commit the transaction
    $db->commit();
} catch (Exception $e) {
    // An exception has been thrown
    // We must rollback the transaction
    $db->rollback();
}
而其他sql函数将类似于

  function UpdateEmp(){
     //separate sql queries for emplyee update
        UpdateEmpProject();//nested sql query function
    //Do any db error will stop and rollback the trasaction?
    }

function UpdateEmpProject(){

    //sepeate sql queries for emplyee update

    }

我的问题是,如果UpdateEmp函数中发生任何错误,事务是否会回滚?假设UpdateEmp()还包含另一个带有sql查询的函数,那么嵌套查询也会影响事务结果?

可以,这就是它的doneWill事务检测db异常并回滚所有工作的方式?如果PDO设置为
->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_exception)并且您捕获(PDOException)而不是Exception否它不工作。当嵌套查询失败时,它不会回滚。