Mysql
 sql >> Database >  >> RDS >> Mysql

Come usare la transazione in php/mysql

Emetti semplicemente mysql_query('START TRANSACTION'); e controlla gli errori in ognuno dei tuoi inserti. Se uno di questi non riesce, emettere immediatamente un ROLLBACK senza eseguire nessuna delle query rimanenti. Se tutto va bene con tutti loro emettere un COMMIT.

Potrebbe essere più semplice inserirli in un blocco try-catch per evitare di utilizzare troppi livelli di nidificazione con if-else.

// START TRANSACTION
try{
    // INSERT 1
    if(failed)
        throw new Exception();

    // INSERT 2
    if(failed)
        throw new Exception();

    // INSERT 3
    if(failed)
        throw new Exception();

    // COMMIT
}
catch(Exception $e){
    // ROLLBACK
}

Potresti anche dare un'occhiata all'estensione PDO di PHP . Le transazioni fanno parte delle sue caratteristiche.