Suponiendo que se está ejecutando en el nivel de aislamiento
        predeterminado REPEATABLE READ, cuando se
        realiza una lectura consistente -esto es, una sentencia
        SELECT ordinaria-, InnoDB
        le otorga a la transacción un punto en el tiempo (timepoint)
        del momento en que se realizó la consulta. Si otra transacción
        elimina una fila y confirma la acción en un momento posterior a
        dicho punto, no se verá la fila como borrada. Las inserciones y
        actualizaciones se tratan del mismo modo.
      
        Se puede obtener un timepoint más reciente confirmando la
        transacción actual y emitiendo un nuevo
        SELECT.
      
Esto se llama control de concurrencia multiversión.
               Usuario A                 Usuario B
           SET AUTOCOMMIT=0;      SET AUTOCOMMIT=0;
tiempo
|          SELECT * FROM t;
|          empty set
|                                 INSERT INTO t VALUES (1, 2);
|
v          SELECT * FROM t;
           empty set
                                  COMMIT;
           SELECT * FROM t;
           empty set
           COMMIT;
           SELECT * FROM t;
           ---------------------
           |    1    |    2    |
           ---------------------
           1 row in set
En este ejemplo, el usuario A podrá ver la fila insertada por B solamente cuando B haya confirmado la inserción y A haya confirmado también, de modo que su timepoint avance e incluya la inserción confirmada por B.
        Si se desea ver el “más reciente” estado de la
        base de datos, se debería emplear ya sea el nivel de
        aislamiento READ COMMITTED o bien una lectura
        con bloqueo:
      
SELECT * FROM t LOCK IN SHARE MODE;
É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.

