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

Przykłady transakcji PHP + MySQL

Pomysł, którego zazwyczaj używam podczas pracy z transakcjami, wygląda tak (semi-pseudo-code) :

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');
    $db->query('second query');
    $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 (\Throwable $e) {
    // An exception has been thrown
    // We must rollback the transaction
    $db->rollback();
    throw $e; // but the error must be handled anyway
}

Zauważ, że w przypadku tego pomysłu, jeśli zapytanie się nie powiedzie, należy zgłosić wyjątek:
  • PDO może to zrobić, w zależności od konfiguracji
  • w przeciwnym razie, w przypadku niektórych innych API, może być konieczne przetestowanie wyniku funkcji użytej do wykonania zapytania i samodzielne zgłoszenie wyjątku.

Niestety nie ma w tym żadnej magii. Nie możesz po prostu gdzieś umieścić dyspozycji i automatycznie wykonywać transakcji:nadal musisz określić, jaka grupa zapytań ma zostać wykonana w transakcji.

Na przykład dość często będziesz mieć kilka zapytań przed transakcją (przed begin ) i jeszcze kilka zapytań po transakcji (po commit lub rollback ) i będziesz chciał, aby te zapytania były wykonywane bez względu na to, co się stało (lub nie) w transakcji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Importuj dane do bazy danych MySQL

  2. Jak wykryć znaki UTF-8 w zakodowanej kolumnie Latin1 - MySQL

  3. Jak zaimportować bazę danych za pomocą wiersza poleceń

  4. (mysql, php) Jak uzyskać wartość pola auto_increment przed wstawieniem danych?

  5. Jak dostosować kopie zapasowe MySQL i MariaDB za pomocą ClusterControl