ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Transecciones


Enviado por   •  28 de Noviembre de 2012  •  753 Palabras (4 Páginas)  •  197 Visitas

Página 1 de 4

TRANSACCIONES

Los pasos para usar transacciones en MySQL son:

* Iniciar una transacción con el uso de la sentencia BEGIN.

* Actualizar, insertar o eliminar registros en la base de datos.

* Si se quieren los cambios a la base de datos, completar la transacción con el uso de la sentencia COMMIT. Únicamente cuando se procesa un COMMIT los cambios hechos por las consultas serán permanentes.

* Si sucede algún problema, podemos hacer uso de la sentencia ROLLBACK para cancelar los cambios que han sido realizados por las consultas que han sido ejecutadas hasta el momento.

Vamos a ejecutar algunas consultas para ver como trabajan las transacciones. Lo primero que tenemos que hacer es crear una tabla del tipo InnoDB e insertar algunos datos.

Para crear una tabla InnoDB, procedemos con el código SQL estándar CREATE TABLE, pero debemos especificar que se trata de una tabla del tipo InnoDB (TYPE= InnoDB). Esto es aplicable a cualquier tipo de tabla, pero cuando no se especifica nada, MySQL supone que se trata de una tabla MyISAM.

mysql> CREATE TABLE innotest (campo INT NOT NULL PRIMARY KEY) TYPE = InnoDB;

Query OK, 0 rows affected (0.10 sec)

mysql> INSERT INTO innotest VALUES(1);

Query OK, 1 row affected (0.08 sec)

mysql> INSERT INTO innotest VALUES(2);

Query OK, 1 row affected (0.01 sec)

mysql> INSERT INTO innotest VALUES(3);

Query OK, 1 row affected (0.04 sec)

mysql> SELECT * FROM innotest;

+-------+

| campo |

+-------+

| 1 |

| 2 |

| 3 |

+-------+

3 rows in set (0.00 sec)

. Ahora veamos como usar transacciones.

mysql> BEGIN;

Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO innotest VALUES(4);

Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM innotest;

+-------+

| campo |

+-------+

| 1 |

| 2 |

| 3 |

| 4 |

+-------+

4 rows in set (0.00 sec)

Si en este momento ejecutamos un ROLLBACK, la transacción no será completada, y los cambios realizados sobre la tabla no tendrán efecto.

mysql> ROLLBACK;

Query OK, 0 rows affected (0.06 sec)

mysql> SELECT * FROM innotest;

+-------+

| campo |

+-------+

| 1 |

| 2 |

| 3 |

+-------+

3 rows in set (0.00 sec)

Ahora vamos a ver que sucede si perdemos la conexión al servidor antes de que la transacción sea completada.

mysql> BEGIN;

Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO innotest VALUES(4);

Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM innotest;

+-------+

| campo |

+-------+

| 1 |

| 2 |

| 3 |

| 4 |

+-------+

...

Descargar como (para miembros actualizados)  txt (5.1 Kb)  
Leer 3 páginas más »
Disponible sólo en Clubensayos.com