sql >> Database >  >> RDS >> Mysql

Voorbeelden van PHP + MySQL-transacties

Het idee dat ik over het algemeen gebruik bij het werken met transacties ziet er als volgt uit:(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
}

Merk op dat, met dit idee, als een query mislukt, er een uitzondering moet worden gegenereerd:
  • PDO kan dat doen, afhankelijk van hoe je het configureert
  • anders, met een andere API, moet u mogelijk het resultaat testen van de functie die wordt gebruikt om een ​​query uit te voeren, en zelf een uitzondering maken.

Helaas is er geen magie bij betrokken. Je kunt niet zomaar ergens een instructie plaatsen en transacties automatisch laten doen:je moet nog specificeren welke groep queries in een transactie moet worden uitgevoerd.

U zult bijvoorbeeld vrij vaak een aantal vragen hebben voor de transactie (voordat de begin ) en nog een paar vragen na de transactie (na ofwel commit of rollback ) en je wilt dat die zoekopdrachten worden uitgevoerd, wat er ook is gebeurd (of niet) in de transactie.



  1. Hoe een berekende kolom in de SQL Server-tabel toe te voegen - SQL Server / T-SQL-zelfstudie, deel 47

  2. Wat is de MySQL JDBC-stuurprogrammaverbindingsreeks?

  3. Snel verschillende waarden vinden

  4. PostgreSQL:kenmerk verwijderen uit JSON-kolom