Maison  >  Article  >  base de données  >  Qu’est-ce que le traitement des transactions dans MySQL ? (exemple de code)

Qu’est-ce que le traitement des transactions dans MySQL ? (exemple de code)

青灯夜游
青灯夜游avant
2018-11-13 15:57:372869parcourir

Le contenu de cet article est de vous présenter ce qu'est le traitement des transactions MySQL ? (exemple de code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

Traitement des transactions MySQL

Étapes :

1. Démarrer la transactiondémarrer la transaction

Lorsque nous démarrons une transaction, toutes nos opérations SQL se produisent en mémoire, mais il n'y a pas de réel retour sur le fichier sur le disque de la base de données !

2. Rollback rollback

Le rollback consiste à restaurer l'état d'origine avant le début de la transaction !

Remarque : L'opération de restauration fermera automatiquement une transaction. Si vous souhaitez exécuter à nouveau la transaction, vous devez la rouvrir !

3. Soumettrecommettre

Principes de base des transactions

L'exécution ordinaire est exécutée immédiatement et prend effet car par défaut, MySQL soumet automatiquement l'exécution de l'instruction sql ! Par conséquent, l'essence de l'ouverture d'une transaction est de désactiver la fonction de soumission automatique précédente et de la soumettre manuellement (à l'aide de l'instruction de validation) par l'utilisateur ! [Tutoriels vidéo associés recommandés : Tutoriel MySQL]

Résumé des étapes de la transaction :

1, Ouvrir la transaction

2, Si l'exécution réussit, soumettez le commit

3, Si une instruction SQL ne parvient pas à s'exécuter, annulez !

Exemples de traitement des transactions :

Le traitement des transactions le plus typique consiste à emprunter et à rembourser de l'argent, Ce qui suit est un exemple de Zhang San rendant 1 000 yuans à Li Si :

Vérifiez d'abord les montants d'argent respectifs dans la base de données

Ce qui suit est le traitement du retour Code de transaction d'argent :

<?php  

/**
* MySQL实现事务操作
*/

echo "<meta charset=utf-8>";

// 1 连接数据库
$link = @mysql_connect('localhost','root','') or die('连接数据库失败');
mysql_select_db('test',$link);
mysql_query('set names utf8');

// 2  开启事务
mysql_query("start transaction");
//设置一个变量,用来判断所有sql语句是否成功
$flag = true;

// 2.1执行事务中的一组sql语句 
   
// 李四的money+1000
$sql = "update pdo set mone=money+1000 where name='李四'";
$res = mysql_query($sql);
if (!$res) {
    //若sql语句执行失败,把$falg设置为false
    $flag = false;
}

//张三的money-1000
$sql = "update pdo set money=money-1000 where name='张三'";
$res = mysql_query($sql);
if (!$res) {
    //若sql语句执行失败,把$falg设置为false
    $flag = false;
}

// 2.2 判断事务是否执行成功
if ($flag) {
    //所有sql语句执行成功,把sql语句提交
    mysql_query('commit');
    echo "还钱成功!";
}else{
    // 如其中一条执行失败,则回滚到事务开启之前的状态
    mysql_query('rollback');
    echo "还钱失败!";
}

Résultat :

Ci-dessous, nous en avons délibérément mis un. Le champ est mal écrit. Vérifiez si la transaction est traitée normalement et si le montant d'argent dans la base de données a changé !

// 李四的money+1000
$sql = "update pdo set mone=money+1000 where name='李四'";  //把moeny字段错写成mone

Résultat :

Qu’est-ce que le traitement des transactions dans MySQL ? (exemple de code)

Le résultat est que le remboursement a échoué, et les sommes d'argent respectives en la base de données n'a pas changé, indiquant que lorsqu'une certaine instruction n'est pas exécutée avec succès, la chose ne sera pas validée, mais sera restaurée pour restaurer les données à l'état d'origine avant de démarrer la transaction. C'est également le rôle de l'utilisation. transactions, c'est-à-dire uniquement lorsque toutes les instructions SQL de la transaction La transaction ne sera soumise que si toutes les exécutions réussissent, sinon elle sera annulée !

Résumé : Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer