Est-ce que MySQL permet l'utilisation de transactions imbriquées?Les transactions imbriquées sont-elles autorisées dans MySQL?
Répondre
InnoDB
prend en charge SAVEPOINTS
.
Vous pouvez effectuer les opérations suivantes:
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
---
Merci, je vais garder cela à l'esprit pour référence future. –
ce n'était pas la question, "points de sauvegarde" sont une chose "soutien de transaction imbriquée" était la vraie question. Voir [ce lien] (http://docs.oracle.com/cd/E17076_02/html/gsg_txn/C/nestedtxn.html) – arod
@arod: pourriez-vous expliquer la différence dans un contexte monothread? Merci! – Quassnoi
Si vous en utilisant php, alors vous pourriez être intéressant dans https://github.com/Enelar/phpsql Il supportent MySQL et pgsql et extensible à d'autres connecteurs.
function TransferMoney()
{ // Nested transaction code could not even know that he nested
$trans3 = db::Begin();
if (!db::Query("--Withdraw money from user", [$uid, $amount], true))
return $trans3->Rollback();
db::Query("--Deposit money to system");
return $trans3->Commit();
}
$trans = db::Begin();
db::Query("--Give item to user inventory");
$trans2 = $trans->Begin();
$trans2->Query("--Try some actions and then decide to rollback");
$trans2->Rollback();
// Commit or rollback depending on money transfer result
return $trans->Finish(TransferMoney());
De la documentation MySQL:
Les transactions ne peuvent pas être imbriquées. Ceci est une conséquence de la validation implicite effectuée pour toute transaction en cours lorsque vous émettez une instruction START TRANSACTION ou l'un de ses synonymes. https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html
- 1. Les transactions sont-elles autorisées par défaut dans SQLServer?
- 2. Les instructions 'if' imbriquées sont-elles autorisées dans vxml?
- 3. Comment utiliser plusieurs, transactions imbriquées?
- 4. Les méthodes d'extension ne sont pas autorisées dans les classes statiques imbriquées?
- 5. Quelle est la portée de l'isolation dans les transactions imbriquées dans SQL Server?
- 6. Transactions de base de données imbriquées en C#
- 7. Opération verrouillée sur des données non autorisées
- 8. Continuer dans les boucles imbriquées
- 9. Niveaux d'isolation des transactions MySQL brisés?
- 10. Comment contrôler les balises HTML autorisées dans WMD Editor?
- 11. gitose clés autorisées
- 12. Prise en charge MSDTC (Distributed Transactions) dans MySQL
- 13. Gestion des transactions dans les applications Web
- 14. pointeur sur struct dans les struct imbriquées
- 15. MySQL - La combinaison de questions et réponses de plusieurs transactions
- 16. Databases imbriquées dans ASP.net
- 17. Comment gérer les transactions java ee?
- 18. Subsonic 3 dépôt simple et les transactions
- 19. Portée des transactions dans WCF
- 20. Django admin: désactiver les transactions DB
- 21. Transactions, quand il faut les supprimer
- 22. Voir tous les journaux de transactions dans SQL Server 2008
- 23. Transactions de stockage dans les liaisons Python de Redland?
- 24. Suivi des modifications dans SQL Server pendant les transactions
- 25. Comment utiliser les transactions dans DotNetNuke (enchevêtré avec L2S)?
- 26. Rangées imbriquées dans une rangée
- 27. Transactions SQLTransaction et T-SQL
- 28. Supprimer l'URL pour les associations imbriquées
- 29. Vérifiez si la valeur existe dans les listes imbriquées
- 30. C# Vérifications nuls imbriquées dans les instructions if
MySQL ne supporte pas les transactions imbriquées – hamedkh