2011-10-27 1 views
1

J'ai un projet Visual Studio 2008 C# .NET 3.5 utilisant MySql 5.1.53 et MySql Connector/Net 6.4.4.Utilisation de MySqlTransaction pour restaurer

'protocol_version', '10' 
'version', '5.1.53-community-log' 
'version_comment', 'MySQL Community Server (GPL)' 
'version_compile_machine', 'unknown' 
'version_compile_os', 'Win64' 

Je crée une table dans ma base comme ceci. Mais, après l'échec simulé, la table existe toujours dans ma base de données.

Que dois-je faire pour que la transaction soit annulée correctement?

Répondre

3

L'instruction Create Table provoque la validation automatique. Il ne participe pas à la transaction.

Voir Statements That Cause an Implicit Commit

Les énoncés figurant dans cette section (et les synonymes pour eux) fin implicitement une transaction, comme si vous aviez fait un COMMIT avant d'exécuter l'instruction.

Dans votre cas, vous pouvez simplement supprimer la table si une exception se produit. Ce n'est pas techniquement un retour en arrière, mais cela devrait servir votre objectif.

Si vous n'avez pas besoin d'un bloc try catch. La transaction est annulée automatiquement si elle est appelée sans appel Commit

+0

La suppression du bloc try/catch n'a pas aidé – PaulH

+0

@PaulH a lu la réponse mise à jour. –

+0

Quelle est la meilleure façon d'annuler une création? Il suffit de laisser tomber les tables s'il y a une exception? – PaulH

Questions connexes