Latest web development tutorials

transaction MySQL

MySQL opération de traitement des transactions est principalement utilisé pour les grands, une grande complexité des données. Par exemple, dans le système de gestion du personnel, vous supprimez une personne, qui est, vous devez supprimer l'agent d'information de base, et l'agent de supprimer également des informations connexes, telles que la boîte aux lettres, articles, etc., de sorte que la déclaration d'opération de base de données constitue une transaction !

  • Seulement dans le moteur de base de données MySQL utilisé la base de données InnoDB ou une table pour soutenir les transactions
  • Les transactions peuvent être utilisés pour maintenir l'intégrité de la base de données pour assurer que la majeure partie des instructions SQL soit tout exécuté ou non exécuté tous
  • Gestion des transactions pour l'insertion, update, delete

En règle générale, la transaction doit satisfaire à quatre conditions (ACID): atomicité (atomicité), Cohérence (stabilité), isolement (isolement), Durabilité (fiabilité)

  • 1, transaction atomique: un ensemble de transactions, ou le succès, ou retirée.
  • 2. Stabilité: les données illégales (la contrainte de clé étrangère, etc.), l'opération de retrait.
  • 3. Isolation: Une transaction indépendante. Résultats Après une transaction, affecte l'autre transaction, d'autres opérations seront retirées. 100% de l'isolement de la transaction, la nécessité de sacrifier la vitesse.
  • 4. Fiabilité: Une fois le logiciel et le matériel crash, les données InnoDB table axée sur la reconstruction utilisera la modification du fichier journal. La fiabilité et la vitesse ne peut pas avoir les deux, les options de innodb_flush_log_at_trx_commit quand il a décidé de sauver le journal des transactions.

En Mysql console utilise des transactions pour fonctionner

1, le début d'une transaction

start transaction

2, faire point de sauvegarde

savepoint 保存点名称

3, l'opération

4, peut être roulé en arrière, vous pouvez soumettre, pas de problème, à notre avis, il y a des problèmes rollback.

PHP instance de transaction utilisé

<?php
$handler=mysql_connect("localhost","root","password");
mysql_select_db("task");
mysql_query("SET AUTOCOMMIT=0");//设置为不自动提交,因为MYSQL默认立即执行
mysql_query("BEGIN");//开始事务定义
if(!mysql_query("insert into trans (id) values('2')"))
{
mysql_query("ROLLBACK");//判断当执行失败时回滚
}
if(!mysql_query("insert into trans (id) values('4')"))
{
mysql_query("ROLLBACK");//判断执行失败回滚
}
mysql_query("COMMIT");//执行事务
mysql_close($handler);
?>