Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

PHP OO Duda PDO y ROLLBACK

Estas en el tema de Duda PDO y ROLLBACK en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buen día y gracias por leer este tema: Estuve realizando pruebas con PDO y ROLLBACK, entonces en el bloque TRY hacia una inserción valida a ...
  #1 (permalink)  
Antiguo 29/07/2011, 11:54
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Duda PDO y ROLLBACK

Buen día y gracias por leer este tema:

Estuve realizando pruebas con PDO y ROLLBACK, entonces en el bloque TRY hacia una inserción valida a la base de datos y después realizaba una consulta a una tabla que no existe para generar un error... y en el bloque catch tengo el ROLLBACK para ver si funciona. Este es el codigo:

Código PHP:
Ver original
  1. <?php
  2. require_once 'include/cls.trans.DB.php'; // invoco la pagina que conecta a la base de datos
  3. $conexion = DB::getInstance(); //obtengo una instancia de la conexion
  4.  
  5. try{
  6.     $conexion->comenzartransaccion(); //beginTransaction()
  7.    
  8.     // insert que no provoca error
  9.     $array = array(2, 'Belmira', 1);
  10.     $conexion->prepararInsersiones("INSERT INTO tbl_ciudad (id_dpto, ciudad_nombre, ciudad_estado) VALUES (?, ?, ?)"); // prepare
  11.     $conexion->ejecutar($array); // execute
  12.    
  13.     // provocar error
  14.     $array2 = array();
  15.     $conexion->prepararConsultas("SELECT * FROM tbl_prueba"); //prepare
  16.     $conexion->ejecutar($array2); // execute
  17.  
  18.    
  19.     $conexion->commiter(); // commit()
  20.    
  21.     echo "Todo bien...!";
  22.    
  23. }catch(PDOException $e){
  24.     print_r($e);
  25.     $conexion->rollback();
  26.    
  27. }
  28. ?>

Esto funciona bien ya que no inserta en la base de datos pero si comento la segunda transacción si la inserta...

Después me di cuenta que si le quito el ROLLBACK en el bloque CATCH también trabaja bien, y tiene razón ya que el bloque TRY solo se ejecuta por completo si todo esta bien, y al ver el error el la consulta entonces pasa al CATCH y no realiza el INSERT.

Mi pregunta es... Como hago para probar el ROLLBACK ? por que si coloco otro INSERT que provoque error entonces igual se me va a salir por el CATCH sin hacer nada del bloque TRY
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #2 (permalink)  
Antiguo 29/07/2011, 12:26
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Duda PDO y ROLLBACK

Yo uso algo así
Código PHP:
Ver original
  1. <?php
  2. $oci = new PDO('oci:dbname=dbOracle;', 'user', 'pass');
  3. $mysql = new PDO('mysql:host=localhost;dbname=dbMysql', 'user', 'pass');
  4.  
  5. $mysql->beginTransaction();
  6. $rowsAffected = $mysql->exec('TRUNCATE TABLE tabla');
  7.  
  8. foreach($oci->query('SELECT * FROM TABLE', PDO::FETCH_ASSOC) as $r){
  9.     $insert = $mysql->prepare('INSERT INTO tabla VALUES(null, ?)');
  10.     $insert->bindParam(1, $r['COLUMNA'], PDO::PARAM_STR);
  11.     $insert->execute();
  12. }
  13.  
  14. if($mysql == true){
  15.     $mysql->commit();
  16. }else{
  17.     $mysql->rollback();
  18. }

La idea es usar beginTransaction y luego commit o rollback
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 29/07/2011, 12:37
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: Duda PDO y ROLLBACK

Listo, queda entendido... ahora me asalta una duda, he estado leyendo mucho acerca del ROLLBACK y veo que todos lo hacen con DROP, TRUNCATE, DELETE y todas las clausulas MySql que indican la eliminación de una tabla o registros...

Según esto no creo que valga la pena realizar un rollback para varios INSERTS dentro de un bloque TRY ya que este mismo no ejecutara ninguno si alguno de ellos falla... es esto lógico y valedero ? o es necesario colocar el ROLLBACK para este tipo de situaciones..?

Muchas gracias por sacarme de la duda.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #4 (permalink)  
Antiguo 29/07/2011, 13:03
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Duda PDO y ROLLBACK

Es de acuerdo a lo que tu desees, vamos a suponer que quieras que inserte 3 valores y siempre tiene que ser 3 valores, si falla en alguno no vas a querer insertar los demás. Pero si no te importa, pues para que colocar un rollback, cuando no lo vas a usar
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 29/07/2011, 13:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Duda PDO y ROLLBACK

Depende, si todos esos registros los necesitas para algo en específico es muy conveniente manejarlos en una transacción.
  #6 (permalink)  
Antiguo 29/07/2011, 13:09
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: Duda PDO y ROLLBACK

Tienes razón, pero no lo veo lógico, si yo tengo esto dentro de un bloque TRY:

try{
INSERT INTO tabla1;
INSERT INTO tabla2;
INSERT INTO tabla3;
}

Si falla alguno pasa al CATCH y no hace nada de nada de nada, entonces para que el ROLLBACK si el bloque TRY no deja insertar nada de nada ? no habría que hacer ROLLBACK porque el TRY no hizo ningún INSERT.

Supongamos que yo mando 100000000 campos de un formulario a ese TRY para almacenar los datos divididos es esas tres tablas, unos van a la primera, otros a la segunda y otros a la tercera. Si alguno falla ya sea porque viene vació, o no es el formato, o la base de datos no le dio la gana de hacer el INSERT porque esta enferma o lo que sea, igual no hará ninguno de los tres INSERTS y pasara al CATCH dejando las tablas como estaban, entonces para que usar ROLLBACK ?
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???

Última edición por jotaincubus; 29/07/2011 a las 13:15 Razón: mas informacion
  #7 (permalink)  
Antiguo 29/07/2011, 13:18
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Duda PDO y ROLLBACK

Entiendo, me corrijen si estoy equivocado, pero el catch va a mostrarse, cuando haya algún error, es decir, si los primeros funcionaron y el tercero fallo, los primeros dos se registran, porque el try solo detiene el código si hay algún fallo, no le dice a la base de datos que haga un rollback. Con try y catch, lo dice el nombre es trata si funciona algo y si no funciona mostrar el error donde fue. Por lo que los primeros dos registro que hizo el insert deben registrarse, no así el rollback que vuelve el proceso a como estaba antes de hacer todo lo que hayas colocado entre el beginTransaction
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 29/07/2011, 13:27
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: Duda PDO y ROLLBACK

Acabo de realizar la siguiente prueba...

Código PHP:
Ver original
  1. <?php
  2. require_once 'include/cls.trans.DB.php'; // invoco la pagina que conecta a la base de datos
  3. $conexion = DB::getInstance(); //obtengo una instancia de la conexion
  4.  
  5. try{
  6.     $conexion->comenzartransaccion();
  7.    
  8.     // insert que no provoca error
  9.     $array = array(2, 'Probando', 1);
  10.     $conexion->prepararInsersiones("INSERT INTO tbl_ciudad (id_dpto, ciudad_nombre, ciudad_estado) VALUES (?, ?, ?)");
  11.     $conexion->ejecutar($array);
  12.    
  13.     // provocar error
  14.     $array2 = array('sapo', 'Otro', 1);
  15.     $conexion->prepararInsersiones("INSERT INTO tbl_ciudad (id_dpto, ciudad_nombre, ciudad_estado) VALUES (?, ?, ?)");
  16.     $conexion->ejecutar($array2);
  17.  
  18.    
  19.     $conexion->commiter();
  20.    
  21.     echo "Todo bien...!";
  22.    
  23. }catch(PDOException $e){
  24.     print_r($e);
  25.     //$conexion->rollback();
  26.    
  27. }
  28. ?>

Como pueden ver el primero esta bien, el segundo NO PORQUE EL PRIMER CAMPO ES INTEGER y le puse 'sapo', y déjenme decirles que NO INSERTO EL PRIMERO TAMPOCO, pero si comento el segundo INSERT si me inserta el primero... entonces mira que si una no se cumple NO HACE NADA DEL BLOQUE TRY.

Error generado:
Incorrect integer value: 'sapo' for column 'id_dpto' at row 1
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???

Última edición por jotaincubus; 29/07/2011 a las 13:28 Razón: Mas informacion
  #9 (permalink)  
Antiguo 29/07/2011, 13:30
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Duda PDO y ROLLBACK

Así es, es tal cual dice abimaelrc, el catch actua a la primera excepción que se lanze en el bloque y el catch agarra la excepción si esta definida, en caso contrario salta más arriba hasta que alguien la cache, un test podría ser así:
Código PHP:
Ver original
  1. $dbh = new PDO(...);
  2. try {
  3.       $dbh->beginTransaction();
  4.       $dbh->query("insert...");
  5.  
  6.       throw new PDOException('foo');
  7.       $dbh->commit();
  8. } catch (PDOException $e) {
  9.       echo "something bad: " . $e->getMessage();
  10.  
  11.       $dbh->rollback();
  12. }

Ese código nunca funcionará porque estamos metiendo la excepción "a mano" la idea es que tu lanzes una excepción en base a condiciones conocidas o desconocidas.

Por ejemplo, que tal que quieres hacer un UPDATE pero solamente sabes que hay 1 registro, y por alguna razon rowCount te devuelve 2, lanzas una excepción, o cosas por el estilo.

Saludos.
  #10 (permalink)  
Antiguo 29/07/2011, 13:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Duda PDO y ROLLBACK

Cita:
Iniciado por jotaincubus Ver Mensaje
Acabo de realizar la siguiente prueba...

Código PHP:
Ver original
  1. <?php
  2. require_once 'include/cls.trans.DB.php'; // invoco la pagina que conecta a la base de datos
  3. $conexion = DB::getInstance(); //obtengo una instancia de la conexion
  4.  
  5. try{
  6.     $conexion->comenzartransaccion();
  7.    
  8.     // insert que no provoca error
  9.     $array = array(2, 'Probando', 1);
  10.     $conexion->prepararInsersiones("INSERT INTO tbl_ciudad (id_dpto, ciudad_nombre, ciudad_estado) VALUES (?, ?, ?)");
  11.     $conexion->ejecutar($array);
  12.    
  13.     // provocar error
  14.     $array2 = array('sapo', 'Otro', 1);
  15.     $conexion->prepararInsersiones("INSERT INTO tbl_ciudad (id_dpto, ciudad_nombre, ciudad_estado) VALUES (?, ?, ?)");
  16.     $conexion->ejecutar($array2);
  17.  
  18.    
  19.     $conexion->commiter();
  20.    
  21.     echo "Todo bien...!";
  22.    
  23. }catch(PDOException $e){
  24.     print_r($e);
  25.     //$conexion->rollback();
  26.    
  27. }
  28. ?>

Como pueden ver el primero esta bien, el segundo NO PORQUE EL PRIMER CAMPO ES INTEGER y le puse 'sapo', y déjenme decirles que NO INSERTO EL PRIMERO TAMPOCO, pero si comento el segundo INSERT si me inserta el primero... entonces mira que si una no se cumple NO HACE NADA DEL BLOQUE TRY.

Error generado:
Incorrect integer value: 'sapo' for column 'id_dpto' at row 1
Verifica que no tengas el AutoCommit en tu MySQL, ya que al hacer el begintransaction, espera una transacción, y al no hacer el commit, aunque no hagas explicitamente el rollback no va a insertar el dato hasta encontrarse con un commit.
  #11 (permalink)  
Antiguo 29/07/2011, 13:38
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: Duda PDO y ROLLBACK

Cita:
Verifica que no tengas el AutoCommit en tu MySQL, ya que al hacer el begintransaction, espera una transacción, y al no hacer el commit, aunque no hagas explicitamente el rollback no va a insertar el dato hasta encontrarse con un commit.
Hola, pues mira que $conexion->commiter(); es el que tiene el commit(); y funciona ya que mira que me genera el error:

Cita:
PDOException Object ( [message:protected] => SQLSTATE[HY000]: General error: 1366 Incorrect integer value: 'sapo' for column 'id_dpto' at row 1 [string:Exception:private] => [code:protected] => HY000 [file:protected] => C:\Zend\Apache2\htdocs\include\cls.trans.DB.php [line:protected] => 97 [trace:Exception:private] => Array ( [0] => Array ( [file] => C:\Zend\Apache2\htdocs\include\cls.trans.DB.php [line] => 97 [function] => execute [class] => PDOStatement [type] => -> [args] => Array ( [0] => Array ( [0] => sapo [1] => Otro [2] => 1 ) ) ) [1] => Array ( [file] => C:\Zend\Apache2\htdocs\borrame1.php [line] => 16 [function] => ejecutar [class] => DB [type] => -> [args] => Array ( [0] => Array ( [0] => sapo [1] => Otro [2] => 1 ) ) ) ) [previous:Exception:private] => [errorInfo] => Array ( [0] => HY000 [1] => 1366 [2] => Incorrect integer value: 'sapo' for column 'id_dpto' at row 1 ) )
Osea que si intenta ejecutar las inserciones y MySql no deja...
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #12 (permalink)  
Antiguo 29/07/2011, 13:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Duda PDO y ROLLBACK

Por eso, al no encontrar el commit nunca vas a ver el registro, porque se "brinca" esa instrucción al lanzarse la excepción.
  #13 (permalink)  
Antiguo 29/07/2011, 14:07
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: Duda PDO y ROLLBACK

Cita:
Iniciado por GatorV Ver Mensaje
Por eso, al no encontrar el commit nunca vas a ver el registro, porque se "brinca" esa instrucción al lanzarse la excepción.
Pero mira que el INSERT bueno esta de primeras y el que me genera el error de segundas:

beginTransaction()
INSERT UNO;
INSERT DOS; //acá genero error
commit();

Al ejecutar esto genera el error en el segundo INSERT (que es donde yo lo genero a propósito) entonces al encontrar el commit la secuencia seria primer insert, segundo insert, pero este me saca error y no inserta el primero. Esto deberia ser lo normal, por que esa es la discusión, el TRY cuando algo no funciona simplemente no hace nada de lo que esta dentro de el mismo, y pasa al catch (O ESO ES LO QUE YO ENTIENDO).

Por que si el NO encontrase el COMMIT entonces no me mostraría el error que le entrega MySQL diciéndole que el campo id_dpto debe ser INTEGER.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #14 (permalink)  
Antiguo 29/07/2011, 14:11
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Duda PDO y ROLLBACK

Como te indicó verifica el autocommit, te recomiendo esta lectura http://php.net/manual/en/pdo.transactions.php Otra forma, aunque no muy agradable, es que hagas un begintransaction por cada insert.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #15 (permalink)  
Antiguo 29/07/2011, 14:25
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: Duda PDO y ROLLBACK

Ya lo lei... pero no termino de entender, el beginTransaction() pone autocommit en OFF después espera un commit para realizar la transacción, entonces yo tengo todo eso, si php no encuentra el commit simplemente no realiza la transacción y no me mostraría nada de nada.

Y como dice en la pagina

Cita:
if you didn't explicitly commit the transaction, then it is assumed that something went awry, so the rollback is performed for the safety of your data.
Si no encuentra el COMMIT entonces php asume que existe un error con lo que php realiza el ROLLBACK

Entendido esto, en el ejemplo que coloque yo comente el ROLLBACK y simplemente deje el print_r($e) que me muestra el error que PDO encontró (mostrandome que MySql no deja insertar osea que si hizo commit), si eso es asi, El bloque TRY deberia insertar el primero y al encontrar el error en el segundo genera error y me lo muestra.

Pero a mi no me inserta ni el primero ni el segundo, y eso es lo que yo digo (SI ALGUNO FALLA SIMPLEMENTE NO HACE NINGUNO DE LOS DOS). Entonces para que el rollback ?

O sera que no entiendo esto y me dedico a vender PALETAS ?
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #16 (permalink)  
Antiguo 29/07/2011, 14:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Duda PDO y ROLLBACK

Lee como se manejan las transacciones y el concepto de Atomicidad, los inserts si se realizan, el servidor MySQL los procesa es por eso que te genera el error el segundo insert, lo que pasa es que estan en un estado previo, al hacer el commit es cuando ya se escriben los cambios pero mientras en la transacción estan listas para ser escritas y ya fueron validadas por el RDBMS.

Es por eso que aunque no esta explicito el rollback, no ves los datos hasta despues del commit.
  #17 (permalink)  
Antiguo 29/07/2011, 14:53
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Duda PDO y ROLLBACK

Es que lo estas mirando en un ejemplo muy simple jotaincubus, imaginate que tu código sea mas extenso y que tengas otras transacciónes, si no haces commit o rollback, te saltaria una excepción porque ya tienes una transacción activa.
__________________
http://es.phptherightway.com/
thats us riders :)
  #18 (permalink)  
Antiguo 29/07/2011, 14:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Duda PDO y ROLLBACK

Lee también esto:
http://dev.mysql.com/doc/refman/5.0/es/commit.html

Tienes que entender algo, PDO es solo un layer de acceso a tu RDBMS, y es tu RDBMS el que controla la transacción, no PDO, el beginTransaction lo que hace es un START TRANSACTION en tu RDBMS, y por cada Query, si esta fue exitosa o no el RDBMS es el que le avisa a PDO que fallo la query, y es hasta que haces un COMMIT que los cambios se efectuan directo en la base de datos, mientras no los puedes ver porque no existen.
  #19 (permalink)  
Antiguo 29/07/2011, 15:03
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: Duda PDO y ROLLBACK

Aaaaaaaaaaaaaaaa osea que el commit los escribe en el disco duro.... pero como mysql mostró error antes el commit() no se ejecuta.

Es como si antes de escribirlos hiciese una prueba en la base de datos no? y si el RDMS dice que eso esta malo entonces el commit() no se ejecutara?

Es eso lo que esta pasando ? si lo que yo planteo es cierto, entonces si yo tengo cien mil transacciones entre beginTransaction() y commit() y alguna falla entonces no se ejecutara el commit() y no hará cambios en ninguna tabla...

Estoy mal ?
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #20 (permalink)  
Antiguo 29/07/2011, 16:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Duda PDO y ROLLBACK

Así es, es el concepto de atomicidad, te recomiendo lo leas es muy interesante como maneja todos eso el RDBMS, porque inclusive puedes hacer cosas como seleccionar datos de una tabla dentro de la transacción después de hacer el insert sin que existan, por ejemplo:

- INSERT INTO tabla1
- SELECT FROM tabla 1 WHERE dato = 'algo que insertamos arriba'
- INSERT INTO tabla2

COMMIT/ROLLBACK

Eso funciona transparente dentro de la transacción sin problemas, es el concepto de atomicidad.
  #21 (permalink)  
Antiguo 30/07/2011, 08:30
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: Duda PDO y ROLLBACK

GatorV muchísimas gracias por ayudarme y enseñarme como funciona internamente cuando corres un código PHP he interactua con la base de datos ya se que este no escribe directamente en el disco duro (a la loca) si no que hace una especie de test en memoria para ver si funciona, y si todo va bien lo pasa al disco duro... y te felicito porque siempre quieres ayudar y TIENES los conocimiento de COMO FUNCIONAN INTERNAMENTE LAS COSAS y eso no es fácil de entender.

Gracias también a abimaelrc y a masterpuppet por aclararme las dudas con respecto al rollback.

Y queda claro que con ejemplos tan sencillos no es posible realizar una prueba para el rollback, debe ser algo que realmente haga varias transacciones importantes a la base de datos para que este se vea reflejado, por ejemplo lo que me mostró abimaelrc es perfecto ya que se evidencia perfectamente que el rollback esta funcionando.

Muchas gracias a todos.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???

Etiquetas: excepciones, pdo, rollback
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 01:16.