Buenas amigos,
Les expongo mi caso haber si me pueden ayudar.
Tengo la base de datos I con la tabla J. Digamos que ésta es la principal
Luego tengo una base de datos X con la tabla Y. Digamos que ésta sería, por decirlo de alguna forma, auxiliar de I ya que en ésta almaceno archivos asociados a registros de la base de datos I
es decir:
- cada registro de la tabla I.J tiene asociado uno en la tabla X.Y que contiene el archivo asociado al registro de la tabla J
Lo hago así por esto de que el que manda manda aunque mande mal. El que manda se empeña en que tiene que estar asi para mantener la base de datos limpia,...
Son dos consultas por lo tanto para cubrir la posibilidad de que la segunda falle pense en hacer una transacción de la siguiente forma
Código PHP:
Ver original
// conexion a Mysql por defecto la BD I $sql="SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED"; if (!$consulta){ $sqlROLL = "ROLLBACK"; } $sql = "BEGIN"; if (!$consulta){ $sqlROLL = "ROLLBACK"; } // Cambio a la base de datos X para insertar archivo if (!$status){ $sqlROLL = "ROLLBACK"; } // inserto el archivo $sql = "INSERT INTO Y (...) VALUES (...)"; if (!$consulta){ $sqlROLL = "ROLLBACK"; } // Extraigo el id insertado // Cambio a la base de datos I para insertar registro y asociarle el archivo previamente insertado if (!$status){ $sqlROLL = "ROLLBACK"; } //Inserto registro y asocio archivo por medio del campo 'rel_y' $sql = "INSERT INTO J (...,rel_y) VALUES (...,'$key')"; if (!$consulta){ $sqlROLL = "ROLLBACK"; }
Me da la sensación de que al hacer el cambio de base de datos pierdo la transacción. He hecho pruebas y fallando la segunda consulta de inserción me mantiene los cambios hechos en la primera
Gracias de antemano y espero me puedan ayudar pues soy novatillo en esto