Amigo, en las transacciones explicitamente tienes que usar ROLLBACK, para deshacer los cambios, si no la base de datos piensa que todo fue exitoso (a menos que haya un error), y hace el commit, prueba lo que sigue:
Código PHP:
//-------------------------------------------------------------------------
// me conecto a la db1
$db_link1 = mysql_connect("localhost","root","");
mysql_select_db("db_1",$dbl_link1);
// ahora me conecto a la db2
$db_link2 = mysql_connect("localhost","root","");
mysql_select_db("db_2",$db_link2);
// ahora hago el query en la db_1 poniéndolo dentro de una transaccion, y la //cierro cuando tambien haya hecho el query del db2
// query db_1
mysql_query("BEGIN",$db_link1);
mysql_query("INSERT INTO clientes (nombre,apellido) VALUES ('Fulano','Jaramillo')",$db_link1);
//ahora hago el query para el db_2 dentro de su respectiva transacción
mysql_query("BEGIN",$db_link2);
$x = mysql_query("INSERT INTO clientes (nombre,apellido) VALUES ('Fulano','Jaramillo')",$db_link2);
// si ocurre un error en el query, paro el script osea que no se hace el commit,
// por lo tanto no se puede hacer ni el query 1 ni el dos
if(!x){
mysql_query( "ROLLBACK", $db_link2 );
exit();
}
mysql_query("COMMIT",$db_link1);
mysql_query("COMMIT",$db_link2);
//-------------------------------------------------------------------------