Maison > base de données > tutoriel mysql > MySQL prend-il en charge l'imbrication des transactions ?

MySQL prend-il en charge l'imbrication des transactions ?

藏色散人
Libérer: 2019-05-14 15:15:28
avant
2705 Les gens l'ont consulté

Dans un développement récent, j'ai rencontré le problème de confusion des données lors de l'utilisation de MySQL et de l'ouverture de transactions plusieurs fois. Le pseudo-code est le suivant :

begin;
# 操作1
begin;
# 操作2
rollback;
Copier après la connexion

Après l'exécution, Opération. 1< est apparu. Les données de 🎜> sont effectivement écrites, et seules les données de l'opération 2 de sont annulées. Lorsque la première transaction n'est pas validée ou annulée, lorsque la deuxième transaction est démarrée, la première transaction sera automatiquement validée.

Ceci n'est évidemment pas conforme aux attentes psychologiques, et il est également impossible de faire reculer une partie de l'opération. Voici donc la question :

MySQL prend-il en charge l'imbrication des transactions ?

Il est difficile de répondre avec précision à cette question, qu'elle soit prise en charge ou non !

Tout d'abord, appeler start plusieurs fois ne permettra certainement pas l'imbrication des transactions dans MySQL. Après avoir été rappelé par un ami du groupe, j'ai appris qu'il existe une instruction appelée savepoint and rollback to dans MySQL.

Exemple de code :

DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
 
begin;
 
insert into `test`(`name`) values(&#39;111&#39;);
 
SAVEPOINT p1;
 
insert into `test`(`name`) values(&#39;222&#39;);
 
ROLLBACK TO p1;
 
commit;
Copier après la connexion
Le résultat final de l'exécution est qu'il n'y a que 111 données dans la table de test, ce qui réalise l'opération de restauration de certaines opérations. De la même manière, cela évite également le problème de démarrer une transaction plusieurs fois, entraînant la validation de la transaction précédente.

Peut-être que les instructions de point de sauvegarde et de restauration ne peuvent pas être appelées imbrication de transactions, et on ne peut pas dire si MySQL prend en charge ou non l'imbrication de transactions. En bref, le point de sauvegarde et la restauration peuvent être utilisés pour obtenir certaines fonctionnalités d'imbrication de transactions.

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:yurunsoft.com
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