Maison  >  Article  >  base de données  >  Exemples de traitement de transactions MySQL expliqués

Exemples de traitement de transactions MySQL expliqués

巴扎黑
巴扎黑original
2017-05-19 15:20:561924parcourir

Traitement des transactions mysql

Tous les moteurs ne prennent pas en charge le traitement des transactions Comme mentionné au chapitre 21, MySQL prend en charge plusieurs moteurs de base de données de base. Comme indiqué dans ce chapitre, tous les moteurs ne prennent pas en charge la gestion explicite des transactions. MyISAM et InnoDB sont les deux moteurs les plus couramment utilisés. Le premier ne prend pas en charge la gestion explicite des transactions, alors que le second le fait. C'est pourquoi les exemples de tables utilisés dans ce livre ont été créés pour utiliser InnoDB plutôt que MyISAM, plus couramment utilisé. Si votre application nécessite des fonctionnalités de traitement des transactions, veillez à utiliser le type de moteur approprié.

Le traitement des transactions peut être utilisé pour maintenir l'intégrité de la base de données. Il garantit que les lots d'opérations MySQL sont soit complètement exécutés, soit pas exécutés du tout.

La conception de bases de données relationnelles stocke les données dans plusieurs tables, ce qui rend les données plus faciles à manipuler, à maintenir et à réutiliser. Sans entrer dans le comment et le pourquoi de la conception de bases de données relationnelles, les schémas de bases de données bien conçus sont tous relationnels dans une certaine mesure.

Le tableau des commandes utilisé auparavant en est un bon exemple. Les commandes sont stockées dans deux tables, commandes et commandes : commandes stocke la commande réelle, tandis que commande articles stocke les articles commandés. Les deux tables sont liées l'une à l'autre à l'aide d'un identifiant unique appelé clé primaire. Ces deux tables sont à leur tour liées à d'autres tables contenant des informations sur les clients et les produits.

Le processus d'ajout d'une commande au système est le suivant :

(1) Vérifier si le client correspondant existe dans la base de données (requête de la table clients) , sinon, ajoutez-le/elle.

(2) Récupérer l'identifiant du client.

(3) Ajoutez une ligne au tableau des commandes et associez-la à l'identifiant client.

(4) Récupérez le nouvel identifiant de commande indiqué dans le tableau des commandes.

(5) Ajoutez une ligne à la table orderitems pour chaque article commandé, et associez-la à la table des commandes en récupérant l'ID de

(et associez-la à la table des produits par le produit IDENTIFIANT).

Maintenant, supposons qu'une sorte de défaillance de la base de données (telle qu'un espace disque dépassé, des limites de sécurité, des verrous de table, etc.) empêche ce processus de se terminer. Qu'arrive-t-il aux données de la base de données ?

Si l'échec survient après l'ajout du client mais avant l'ajout du tableau des commandes, il n'y aura aucun problème. Il est parfaitement légal pour certains clients de ne pas avoir de commande. Lorsque le processus est réexécuté, l'enregistrement client inséré sera récupéré et utilisé. Vous pouvez effectivement démarrer le processus là où il s’est mal passé.

Mais que se passe-t-il si l'échec se produit après l'ajout de la ligne des commandes mais avant l'ajout de la ligne des articles de commande ? Il y a désormais une commande vide dans la base de données.

Pire encore, si le système échoue au milieu de l'ajout de la ligne orderitems. Le résultat est qu'il y a des commandes incomplètes dans la base de données et que vous n'en êtes pas informé.

Comment résoudre ce problème ? Ici, vous devez utiliser le traitement des transactions. Le traitement des transactions est un mécanisme utilisé pour gérer les opérations MySQL qui doivent être effectuées par lots pour garantir que la base de données ne contient pas de résultats d'opération

incomplets. Avec le traitement des transactions, vous pouvez garantir qu'un ensemble d'opérations ne sera pas arrêté à mi-chemin et qu'elles seront exécutées dans leur intégralité ou pas du tout (sauf indication explicite de le faire). Si aucune erreur ne se produit, l'ensemble des instructions est validé (écrit) dans la table de base de données. Si une erreur se produit, annulez (annulez) pour restaurer la base de données dans un état connu et sûr. Alors, regardez le même exemple, cette fois nous illustrons comment fonctionne le processus.

(1) Vérifiez si le client correspondant existe dans la base de données, sinon ajoutez-le.

(2) Soumettez les informations client.

(3) Récupérer l'identifiant du client.

(4) Ajoutez une ligne au tableau des commandes.

(5) Repli en cas d'échec lors de l'ajout de lignes au tableau des commandes.

(6) Récupérez le nouvel identifiant de commande indiqué dans le tableau des commandes.

(7) Pour chaque article commandé, ajoutez une nouvelle ligne au tableau des articles de commande.

(8) Si un échec se produit lors de l'ajout de nouvelles lignes aux articles de commande, annulez toutes les lignes d'articles de commande et les lignes de commandes ajoutées.

(9) Soumettez les informations de commande.

Lors de l'utilisation des transactions et du traitement des transactions, plusieurs mots clés apparaissent à plusieurs reprises. Voici quelques termes que vous devez connaître sur le traitement des transactions :

1. Transaction fait référence à un ensemble d'instructions SQL

2. au processus d'annulation de l'instruction SQL spécifiée ;

3. Soumettre (commit) fait référence à l'écriture des résultats de l'instruction SQL non stockés dans la table de base de données

4. paramètre dans le traitement des transactions Un espace réservé temporaire auquel vous pouvez émettre une annulation (par opposition à l'annulation de la totalité de la transaction).

[Recommandations associées]

1. Tutoriel vidéo gratuit MySQL

2 Déclencheur MySQL UPDATE (mise à jour) et analyse de la profondeur du déclencheur<.>

3.

Explication détaillée de l'utilisation du déclencheur de suppression MySQL (suppression)

4

Explication détaillée du déclencheur d'insertion (insertion) dans MySQL<.> 5.

Introduction aux déclencheurs MySQL et comment créer et supprimer des déclencheurs

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn