sql >> Databasteknik >  >> RDS >> Mysql

PDO Flera frågor:commit och rollback transaktion

Ja, ditt tillvägagångssätt är korrekt. Använder Try...catch kan leda till renare och mer läsbar kod i vissa fall, men ditt övergripande tillvägagångssätt är bra.

Om ditt kodfragment kommer från en funktion som hanterar DB-frågor och inte mycket annat, skulle jag förmodligen byta tillvägagångssätt:

// 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();

Naturligtvis, om du behöver göra mycket städning innan du kan return , då är ditt ursprungliga tillvägagångssätt bättre. Speciellt i dessa fall skulle jag överväga att använda PDO::ERRMODE_EXCEPTION. Detta har några ytterligare fördelar, som undantag som automatiskt återställer transaktionen om de inte upptäcks.



  1. Återgå till readline version 6.x i Homebrew för att fixa Postgresql?

  2. Okänd kolumn i "ha klausul"

  3. viloläge map java Long till MySQL BIGINT-fel

  4. Söker du efter NULL på en samling i JPQL-frågor?