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

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

Patricia Arquette
Patricia Arquetteoriginal
2024-11-28 03:50:22575parcourir

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
---

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!

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