MySQL InnoDB Transaction

Répondre
Lefounard
le 20/07/2007 à 13:53
Lefounard
Bonjour,
Je n'ai pas du saisir le fonctionnement des transaction. Voila mon morceau de code dans lequel, j'ai volontairement inserer une erreur sur la deuxieme requete, pour voir si c'était annule.
/* On demarre notre transtaction */
$req='BEGIN TRANSACTION';
mysql_query($req,LINK);
/*$req.='SET AUTOCOMMIT = 0'; */

echo $req.'<br />';

/* On supprime les meta données du champs situé dans la table meta_clients_extend */
$req= sprintf("DELETE FROM `meta_clients_extend` WHERE id_champ='%d'",mysql_real_escape_string($id_champ, LINK));
mysql_query($req,LINK);
echo $req.'<br />';


/* On supprime le champs dans la table clients_extend */
/* ALTER TABLE `clients_extend` DROP `nom_champ` */
$req=sprintf("ALTER TABLE `clients_extend` DROPFR `%s`",mysql_real_escape_string($nom_champ, LINK));
mysql_query($req,LINK);
echo $req.'<br />';

$req='COMMIT';
mysql_query($req,LINK);

Or la premiere requete est bien execute et en bdd, les elements sont enleve, normalement le fait que ce soit une transaction aurait du pratiquer la politique du tout ou rien ?
Mes tables sont en InnoDB.
Merci de vos conseils,
Ciao,
I am singing in the rain , I am happy again !!
Lefounard
le 20/07/2007 à 14:37
Lefounard
C'est bon
<?php
/* On demarre notre transtaction */
$req='START TRANSACTION';
mysql_query($req,LINK);

/* On supprime les meta données du champs situé dans la table meta_clients_extend */
$req= sprintf("DELETE FROM `meta_clients_extend` WHERE id_champ='%d'",mysql_real_escape_string($id_champ, LINK));
mysql_query($req,LINK);


/* On supprime le champs dans la table clients_extend */
/* ALTER TABLE `clients_extend` DROP `nom_champ` */
$req = sprintf("ALTER TABLE `clients_extend` DROPFR `%s`",mysql_real_escape_string($nom_champ, LINK));
$result = mysql_query($req,LINK);

if (!$result) {
$message = 'Requête invalide : ' . mysql_error() . "\n";
$message .= 'Requête complète : ' . $query;
mysql_query('ROLLBACK',LINK);
die($message);
} else {
mysql_query('COMMIT',LINK);
}


/*redirect(ROOT.ADMIN.'edit_structure_client.php');*/
?>
I am singing in the rain , I am happy again !!
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours