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

Sintaxis De START TRANSACTION,COMMIT Y ROLLBACK


Enviado por   •  26 de Octubre de 2013  •  450 Palabras (2 Páginas)  •  467 Visitas

Página 1 de 2

Por defecto, MySQL se ejecuta con el modo autocommit activado. Esto significa que en cuanto ejecute un comando que actualice (modifique) una tabla, MySQL almacena la actualización en disco.

Si usa tablas transaccionales (como InnoDB o BDB), puede desactivar el modo autocommit con el siguiente comando:

SET AUTOCOMMIT=0;

Tras deshabilitar el modo autocommit poniendo la variable AUTOCOMMIT a cero, debe usar COMMIT para almacenar los cambios en disco o ROLLBACK si quiere ignorar los cambios hechos desde el comienzo de la transacción.

Si quiere deshabilitar el modo autocommit para una serie única de comandos, puede usar el comando START TRANSACTION:

START TRANSACTION;

SELECT @A:=SUM(salary) FROM table1 WHERE type=1;

UPDATE table2 SET summary=@A WHERE type=1;

COMMIT;

Con START TRANSACTION, autocommit permanece deshabilitado hasta el final de la transacción con COMMIT oROLLBACK. El modo autocommit vuelve a su estado prévio.

BEGIN y BEGIN WORK se soportan como alias para START TRANSACTION para iniciar una transacción. START TRANSACTION es sintaxis SQL estándar y es la forma recomendada para iniciar una transacción ad-hoc . El comando BEGIN difiere del uso de la palabra clave BEGIN que comienza un comando compuesto BEGIN ... END. El último no comienza una transacción. Consulte Sección 19.2.7, “Sentencia compuesta BEGIN ... END”.

Puede comenzar una transacción así:

START TRANSACTION WITH CONSISTENT SNAPSHOT;

La cláusula WITH CONSISTENT SNAPSHOT comienza una lectura consistente para motores de almacenamiento capaces de ello. Actualmente, esto se aplica sólo a InnoDB. El efecto es el mismo que realizar un START TRANSACTION seguido por un SELECT desde cualquier tabla InnoDB . Consulte Sección 15.10.4, “Lecturas consistentes que no bloquean”.

Comenzar una transacción provoca que se realice un UNLOCK TABLES implícito.

Tenga en cuenta que si no usa tablas transaccionales, cualquier cambio se almacena de golpe, a pesar del estado del modo autocommit .

Si realiza un comando ROLLBACK tras actualizar una tabla no transaccional dentro de una transacción, ocurre una advertencia ER_WARNING_NOT_COMPLETE_ROLLBACK. Los cambios en tablas transaccionales se deshacen, pero no los cambios en tablas no transaccionales.

Cada transacción se almacena en el log binario en un trozo, hasta COMMIT. Las transacciones que se deshacen no se loguean. (Exceción: Las modificaciones a tablas no transaccionales no pueden deshacerse. Si una transacción que se deshace incluye modificaciones a tablas no transaccionales,

...

Descargar como (para miembros actualizados)  txt (3.2 Kb)  
Leer 1 página más »
Disponible sólo en Clubensayos.com