Mysql
 sql >> база данни >  >> RDS >> Mysql

Транзакции на PHP, MySQL, PDO - Кодът вътре в try block спира ли на commit()?

Ако транзакцията се провали поради някаква причина, кодът спира на самия ред, където е възникнала грешка end, след което изпълнението прескача директно към блока за хващане. Така че е достатъчно начина, по който сте го написали в Code Block 2.

Имайте предвид, че трябва винаги да хвърляте отново изключението след връщане назад. В противен случай никога няма да имате представа какъв е бил проблемът. Така трябва да бъде

try{
    $stmt = $db->prepare(... 1 ...);
    $stmt->execute();

    $stmt = $db->prepare(... 2 ...);
    $stmt->execute();

    $stmt = $db->prepare(... 3 ...);
    $stmt->execute();

    $db->commit();

    return true;
}catch(Exception $e){
    $db->rollBack();
    throw $e;
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да подобрим производителността на INSERT в много голяма MySQL таблица

  2. MySQL таблица с колона varchar като външен ключ

  3. Има ли SQLite еквивалент на DESCRIBE [таблица] на MySQL?

  4. Как да предотвратим превишаване на max_user_connections при презареждане/опресняване на страницата многократно?

  5. Фатална грешка:Извикване на недефиниран метод mysqli_stmt::get_result()