sql >> Base de Datos >  >> RDS >> Mysql

No se pueden ver las filas insertadas por una transacción en ejecución cuando el nivel de aislamiento es READ_UNCOMMITTED

Con mi pequeña secuencia de comandos de prueba, no aparecen registros antes de la confirmación si inicio sesión desde otra consola. Sin embargo, puedo seleccionar los registros recién insertados en la misma sesión. Así que asumo que antes de la confirmación puede acceder a filas que ya están en la tabla, pero ahora nuevas filas o cambios antes de que se confirmen.

<?php

require_once('db.php');

q( 'drop table if exists t' );
q( 'create table t (id integer not null auto_increment primary key, v datetime) engine=innodb' );

q( 'set transaction isolation level read uncommitted' );
q( 'start transaction' );
q( 'insert into t (v) values (now()),(now()),(now())' );

echo q1( 'count(*)', 't', 'true'); // translates to "select count(*) from t where true"; 
// echoes "3" to the console

// wait for input
$handle = fopen ("php://stdin","r");
$line = fgets($handle);

// with a mysql client from a 2nd console at this point no new records show in table t

q( 'commit' );

// after this point all new records show up in table t from a 2nd session.