Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/11/2015, 00:09
spiner13
 
Fecha de Ingreso: julio-2014
Mensajes: 12
Antigüedad: 9 años, 9 meses
Puntos: 0
Uso de BEGIN, COMMIT y ROLLBACK

Buenas, espero colocar esto en el foro correcto.

Tengo muchas dudas sobre el funcionamiento de estas funciones de mysqli desde php
como ejemplo, tengo este ejemplo sacado de la documentación de estas funciones:

Código PHP:
Ver original
  1. <?php
  2. $mysqli = new mysqli("127.0.0.1", "mi_usuario", "mi_contraseña", "sakila");
  3.  
  4. if ($mysqli->connect_errno) {
  5.     printf("Conexión fallida: %s\n", $mysqli->connect_error);
  6.     exit();
  7. }
  8.  
  9. $mysqli->begin_transaction(MYSQLI_TRANS_START_READ_ONLY);
  10.  
  11. $mysqli->query("SELECT first_name, last_name FROM actor");
  12. $mysqli->commit();
  13.  
  14. $mysqli->close();
  15. ?>

¿Como funcionan las flags que me da la documentación? <-ironicamente, no dice su funcionamiento
¿Todas las consultas ejecutadas luego de BEGIN se ejecutan realmente? ¿es alterada la base de datos?
sino es alterada la base de datos ¿al utilizar COMMIT, se realizan los cambios?
si es alterada ¿al usar ROLLBACK se descarta esos cambios?

al declarar un begin, todas las consultas insert, select y update que se hagan después pueden ser revertidas con el rollback?

si es asi, puede realizarse de esta forma?

Código PHP:
Ver original
  1. <?php
  2. class transaccion{
  3.  
  4. function nueva(){
  5.  $mysqli->begin_transaction(MYSQLI_TRANS_START_READ_ONLY);
  6. }
  7.  
  8. function add_consulta($parametros){
  9.  $mysqli->query($parametros);
  10. }
  11.  
  12. function finalizar_transaccion(){
  13.  $mysqli->$mysqli->commit();
  14. }
  15.  
  16. function cancelar_transaccion(){
  17.  $mysqli->rollback();
  18. }
  19. }
  20. ?>

es posible utilizar nueva() en un script, ir agregando items con add_consulta y luego, si asi lo desea, puedan guardarse los cambio con finalizar_transaccion o cancelarla con su respectivo metodo en scripts diferetes?

Gracias por su paciencia y tiempo.