Maison > base de données > tutoriel mysql > le corps du texte

Comment MySQL gère-t-il les transactions imbriquées à l'aide de points de sauvegarde ?

Patricia Arquette
Libérer: 2024-11-28 03:50:22
original
574 Les gens l'ont consulté

How Does MySQL Handle Nested Transactions Using Savepoints?

Transactions imbriquées dans MySQL

Contrairement à certains autres systèmes de gestion de bases de données, MySQL ne prend pas en charge nativement les transactions imbriquées. Cela signifie que vous ne pouvez pas créer une nouvelle transaction au sein d'une transaction existante. Cependant, MySQL InnoDB, un moteur de stockage populaire utilisé dans MySQL, offre une solution pour gérer le comportement de type transaction imbriquée grâce à l'utilisation de points de sauvegarde.

SAVEPOINTS dans InnoDB

Les points de sauvegarde vous permettent de créer des jalons temporaires au sein d'une transaction. Vous pouvez créer et nommer un point de sauvegarde, puis revenir à ce point de sauvegarde pour annuler toutes les opérations survenues après celui-ci. Cela offre un niveau de granularité et de flexibilité similaire aux transactions imbriquées.

Comment utiliser les SAVEPOINTS

Pour utiliser les points de sauvegarde dans MySQL, vous pouvez suivre ces étapes :

  1. Démarrez une transaction à l'aide de la commande START TRANSACTION.
  2. Créez un point de sauvegarde à l’aide de la commande SAVEPOINT. Donnez-lui un nom significatif, tel que tran2.
  3. Effectuez toutes les opérations que vous souhaitez inclure dans le point de sauvegarde.
  4. Pour revenir au point de sauvegarde, utilisez la commande ROLLBACK TO suivie du nom du point de sauvegarde.
  5. Si vous souhaitez annuler la totalité de la transaction, utilisez le ROLLBACK commande.

Exemple

Considérons l'exemple suivant :

CREATE TABLE t_test (id INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;

START TRANSACTION;

INSERT
INTO    t_test
VALUES  (1);

SELECT  *
FROM    t_test;

 id
---
  1

SAVEPOINT tran2;

INSERT
INTO    t_test
VALUES  (2);

SELECT  *
FROM    t_test;

 id
---
  1
  2

ROLLBACK TO tran2;

SELECT  *
FROM    t_test;

 id
---
  1

ROLLBACK;

SELECT  *
FROM    t_test;

 id
---
Copier après la connexion

Dans cet exemple, nous montrons comment revenir à un point de sauvegarde (tran2), puis annulez l'intégralité de la transaction.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal