Maison > base de données > tutoriel mysql > Contrôle des transactions d'apprentissage MySQL

Contrôle des transactions d'apprentissage MySQL

coldplay.xixi
Libérer: 2021-04-07 09:32:19
avant
2778 Les gens l'ont consulté

Contrôle des transactions d'apprentissage MySQL

Qu'est-ce que le contrôle des transactions

Une transaction fait référence à une série d'opérations effectuées comme une unité logique de travail. Ces opérations Soit toutes réussissent , soit toutes échouent . Les transactions garantissent que plusieurs modifications de données sont traitées comme une unité.

  • Dans MySQL, seules les bases de données ou les tables utilisant le moteur de stockage Innodb prennent en charge les transactions
  • les transactions sont utilisées pour maintenir l'intégrité de la base de données et assurer le traitement par lots. Soit toutes ou aucune des instructions SQL n'est exécutée.
  • les transactions sont utilisées pour gérer les instructions INSERT, UPDATE et DELETE
.

Supposons que Zhang San transfère 100 yuans à Li Si au guichet automatique. Dans le système commercial de la banque, des opérations de modification de données en deux étapes seront effectuées :

  1. Déduisez 100 yuans du compte de Zhang San
  2. Ajoutez 100 yuans au compte de Li Si

Comment opérer Que se passe-t-il si l'opération 1 est exécuté avec succès mais l'opération 2 échoue ?

Recommandations d'apprentissage gratuites associées : Tutoriel vidéo MySQL

Quatre caractéristiques des transactions

Si une base de données prend en charge les transactions, alors la base de données doit avoir les quatre caractéristiques de

ACID, à savoir Atomicité (atomicité), Cohérence (cohérence), Isolation (isolement), Durabilité.

    Atomicité : La transaction doit être une unité de travail atomique, et chaque opération incluse dans la transaction doit être effectuée ou aucune.
  • Cohérence : Lorsque la transaction est terminée, elle doit être Toutes les données restent cohérentes
  • Isolement : les transactions s'exécutent de manière indépendante. Plusieurs transactions sont isolées les unes des autres et n'interfèrent pas les unes avec les autres. L'isolement à 100 % des transactions sacrifiera la vitesse
  • Persistance : une fois qu'une transaction est exécutée, son impact sur le système est permanent

Contrôle des transactions MySQL

Dans les

conditions par défaut, MySQL soumet automatiquement les transactions, c'est-à-dire que chaque instruction SQL INSERT, UPDATE et DELETE effectuera une opération COMMIT immédiatement après la soumission. Par conséquent, pour démarrer une transaction, vous pouvez utiliser start transaction ou begin, ou définir la valeur de autocommit sur 0.

    Méthode 1 :
  • Contrôle des transactions dapprentissage MySQL
  • Méthode 2 :
  • Contrôle des transactions dapprentissage MySQL

Exemple

    Connectez-vous à la base de données, utilisez la base de données des étudiants et affichez toutes les tables de données
  1. USE student;SHOW TABLES;
    Copier après la connexion

Contrôle des transactions dapprentissage MySQL 2. Créez la table de données bank_account et insérez deux enregistrements, définissez la valeur du champ de solde de Zhang San +1000

CREATE TABLE bank_account(
	id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
	name VARCHAR(30) COMMENT '姓名',
	balance DECIMAL(18, 2) COMMENT '账户余额');INSERT INTO bank_account(id, name, balance) VALUE(1, '张三', 0);INSERT INTO bank_account(id, name, balance) VALUE(2, '李四', 0);UPDATE bank_account SET balance = balance + 1000 WHERE id = 1;
Copier après la connexion

Contrôle des transactions dapprentissage MySQL 3. Afficher la valeur de validation automatique par défaut

SELECT @@autocommit;
Copier après la connexion

Contrôle des transactions dapprentissage MySQL 4. Afficher tous les enregistrements dans la table de données du compte bancaire

SELECT * FROM bank_account;
Copier après la connexion
Copier après la connexion
Copier après la connexion

Contrôle des transactions dapprentissage MySQL 5. Démarrez le contrôle des transactions et exécutez deux instructions SQL

START TRANSACTION;UPDATE bank_account SET balance = balance - 100 WHERE id = 1;UPDATE bank_account SET balance = balance + 100 WHERE id = 2;COMMIT;
Copier après la connexion

Contrôle des transactions dapprentissage MySQL 6. Afficher le contenu de la table de données à ce moment

SELECT * FROM bank_account;
Copier après la connexion
Copier après la connexion
Copier après la connexion

Contrôle des transactions dapprentissage MySQL 7. Relancez le contrôle des transactions, insérez les deux mêmes instructions SQL, mais modifiez le commit en rollback

START TRANSACTION;UPDATE bank_account SET balance = balance - 100 WHERE id = 1;UPDATE bank_account SET balance = balance + 100 WHERE id = 2;ROLLBACK;
Copier après la connexion

Contrôle des transactions dapprentissage MySQL 8. Vérifiez à nouveau le contenu de la table de données et constatez que le retour Il y a aucun changement dans les données après le lancement de

SELECT * FROM bank_account;
Copier après la connexion
Copier après la connexion
Copier après la connexion

Contrôle des transactions dapprentissage MySQL Remarque : cet article est un résumé de l'apprentissage MySQL du blogueur et ne prend en charge aucune utilisation commerciale. Veuillez indiquer la source lors de la réimpression ! Si vous avez également un certain intérêt et une certaine compréhension pour l'apprentissage de MySQL, vous êtes invités à communiquer avec les blogueurs à tout moment ~

Plus de recommandations d'apprentissage gratuites connexes : Tutoriel mysql (Vidéo)

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!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal