@Mokonauta, ese código que has proporcionado es completamente infuncional y en todo caso seria valido solo para una conexión con CLIENT_MULTI_STATEMENTS o usando mysqli.
Por otra parte efectivamente las transacciones son bastante útiles en estos casos. Una nota, si usas
START TRANSACTION asegúrate de definir
AUTOCOMMIT=0 antes.
$consultas[] = 'INSERT INTO primer_tabla VALUES ('',1,2,3)';
$consultas[] = "INSERT INTO segunda_tabla VALUES ('',3,2,1)";
foreach($consultas as $consulta){
if(!mysql_query($consulta,$enlace)){ $error = true; break;} }
// Si hay error, hacemos rollback (deshacer)
// en caso contrario, commit (aplicar)
Aquí puedes ver porque usar mysqli te puede venir bien.. justo para lo que quieres..
<?php
$enlace = new mysqli('host', 'user', 'pass', 'db');
if($enlace->connect_errno){ die('Fallo al connectar: '.$enlace->connect_error); }
$query = "INSERT INTO primer_tabla VALUES ('',1,2,3); ";
$query .= "INSERT INTO segunda_tabla VALUES ('',3,2,1); ";
if(!$enlace->multi_query($query)){
die('Error en query: '.$enlace->error); }
?>
Saludos