Transacciones MySQLi vs MSSQL

Manual-SQL-en-españolPara los que estamos acostumbrados a trabajar con SQL Server, el manejo de transacciones es bastante transparente y sencillo y se apoya de 3 funciones sqlsrv_begin_transaction, sqlsrv_rollback y sqlsrv_commit.

¿Qué quiere decir esto? Pues que u inicias una transacción cuando quieres y cuando la terminas o la cancelas el sistema vuelve a su estado incial.

¿Cómo gestiona las transacciones MySQL?

Pues también utiliza 3 funciones autocommit, rollback y commit.

¿Cuál es la diferencia?

Pues que para iniciar transacciones utilizando MySQLi tienes que ejecutar autocommit(false) lo cual modifica el estado global de esa conexión, con lo cual al cancelar (rollback) o ejecutar (commit) una transaccción el sistema no vuelve a su estado inicial sino hasta que ejecutas autocommit(true).

Esto es un verdadero engorro, vemos un ejemplo que hace lo mismo en ambos sistemas.

Transacciones con MSSQL

sqlsrv_begin_transaction($conexion)
if(bien)
   sqlsrv_commit($conexion)
else
   sqlsrv_rollback($conexion)

Transacciones con MySQLi

autocommit(false)
if(bien){
   commit()
   autocommit(true)
}
else{
   rollback()
   autocommit(true)
}

¿Veis la diferencia?

Comentarios

Anónimo ha dicho que…
Depende de como lo veas, por ejemplo:

autocommit(false) //Inicio Transaccion
if(bien){
commit()
}
else{
rollback()

}
autocommit(true) //Fin transaccion

Y ahora no se ve tan engorroso y es mas bien algo claro.