Les transactions MySQL sont principalement utilisées pour traiter des données avec des opérations volumineuses et une grande complexité. Par exemple, dans le système de gestion du personnel, si vous supprimez une personne, vous devez supprimer non seulement les informations de base de la personne, mais également les informations liées à la personne, telles que la boîte aux lettres, les articles, etc. . De cette façon, cesOpérations de base de données constituent une transaction !
Dans MySQL, seules les bases de données ou les tables utilisant le moteur de base de données Innodb prennent en charge les transactions.
Le traitement des transactions peut être utilisé pour maintenir l'intégrité de la base de données et garantir que les lots d'instructions SQL sont tous exécutés ou ne sont pas exécutés du tout.
Les transactions permettent de gérer les instructions d'insertion, de mise à jour, supprimer
De manière générale, les transactions doivent remplir quatre conditions (ACID) : Atomicité (atomicité), Cohérence (Stabilité) , Isolement (isolement), Durabilité (fiabilité)
1. Atomicité des transactions : un ensemble de transactions soit réussit, soit est retiré.
2. Stabilité : s'il y a des données illégales (contraintes de clé étrangère, etc.), la transaction sera retirée.
3. Isolement : les transactions s'exécutent de manière indépendante. Si le résultat d'une transaction affecte d'autres transactions, les autres transactions seront retirées. L’isolation à 100 % des transactions nécessite de sacrifier la vitesse.
4. Fiabilité : Après une panne du logiciel ou du matériel, le pilote de la table de données InnoDB utilisera le fichier journal pour le reconstruire et le modifier. La fiabilité et la vitesse élevée sont incompatibles. L'option innodb_flush_log_at_trx_commit détermine quand enregistrer les transactions dans le journal.
Code d'implémentation des données de traitement des transactions PHP, les amis dans le besoin peuvent s'y référer.
public function insertUser ($userArray){ foreach ($userArray as $key => $value) { @$field .= "$key,"; @$content .= "'$value',"; } $field = ereg_replace(',$', '', $field); $content = ereg_replace(',$', '', $content); $db = db_connect(); //连接数据库 $db->autocommit(FALSE); //设置为非自动提交——事务处理 $sql1 = "INSERT INTO t_user (".$field.") VALUES (".$content.")"; $result1 = $db->query($sql1); $sql2 = "INSERT INTO t_userpost (f_username) VALUES ('".$userArray['f_username']."')"; $result2 = $db->query($sql2); if ($result1 && $result2) { $db->commit(); //全部成功,提交执行结果 echo '提交'; } else { $db->rollback(); //有任何错误发生,回滚并取消执行结果 echo '回滚'; } $db->close(); }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!