Mysql
 sql >> Baza danych >  >> RDS >> Mysql

PDO Wiele zapytań:zatwierdź i wycofaj transakcję

Tak, twoje podejście jest poprawne. Używając Try...catch może w niektórych przypadkach prowadzić do czystszego i bardziej czytelnego kodu, ale ogólne podejście jest w porządku.

Jeśli twój fragment kodu pochodzi z funkcji, która obsługuje zapytania DB i niewiele więcej, prawdopodobnie zmieniłbym podejście:

// Begin Transaction
$this->db->beginTransaction();

// Fire Queries
if(!$query_one->execute()){
    $this->db->rollback();
    // other clean-up goes here
    return;
}

if(!$query_two->execute()){
    $this->db->rollback();
    // other clean-up goes here
    return; 
}

$this->db->commit();

Oczywiście, jeśli potrzebujesz dużo sprzątania, zanim będziesz mógł return , wtedy Twoje oryginalne podejście jest lepsze. Szczególnie w takich przypadkach przyjrzałbym się użyciu PDO::ERRMODE_EXCEPTION. Ma to pewne dodatkowe korzyści, takie jak wyjątki, które automatycznie wycofują transakcję, chyba że zostaną złapane.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instalacja MySQL w Dockerze kończy się niepowodzeniem z komunikatem o błędzie Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo

  2. Wyzwalacz MySQL przed usunięciem, aby uniknąć usuwania wielu wierszy

  3. automatyczny przyrost pierwotny pozostawiając przerwy w liczeniu

  4. Konwertuj POINT MySQL na tekst w PHP

  5. Trafność wyszukiwania pełnotekstowego jest mierzona w?