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 o ROLLBACK. 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, la transacción entera se loguea con
        un comando ROLLBACK al final para asegurar
        que las modificaciones a estas tablas se replican.) Consulte
        Sección 5.10.3, “El registro binario (Binary Log)”.
      
        Puede cambiar el nivel de aislamiento para transacciones con
        SET TRANSACTION ISOLATION LEVEL. Consulte
        Sección 13.4.6, “Sintaxis de SET TRANSACTION”.
      
        Deshacer puede ser una operación lenta que puede ocurrir sin
        que el usuario lo haya pedido explícitamente (por ejemplo,
        cuando ocurre un error). Debido a ello, SHOW
        PROCESSLIST en MySQL 5.0 muestra Rolling
        back en la columna Statepara la
        conexión durante rollbacks implícitos y explícitos (comando
        SQL ROLLBACK).
      
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.

