2011-09-28 4 views
10

Existe-t-il un moyen de tester les requêtes mysql sans modifier ma base de données?Simuler des requêtes mysql

Par exemple, puis-je exécuter un delete from my_table where id=101 sans réellement supprimer quoi que ce soit? Qu'en est-il insérer et mettre à jour?

TY

+0

Pourquoi avez-vous besoin de les tester? –

+2

@Pekka 웃 Vérifier manuellement qu'une mise à jour fait ce que vous pensez qu'elle devrait faire avant de le faire. – Will

Répondre

17

Vous pouvez démarrer une transaction avant d'exécuter vos requêtes, puis les restaurer après les avoir exécutées. Notez que pour ce faire, vous aurez besoin de tables InnoDB ou XtraDb (ne fonctionnera pas sur MyISAM).

Pour démarrer une transaction envoyer à MySQL la déclaration suivante:

START TRANSACTION; 

Et à la fin de vos requêtes exécutez l'instruction suivante:

ROLLBACK; 

Votre base de données ne sera jamais modifié du point de vue d'autres connexions. Votre connexion actuelle verra les changements jusqu'à ROLLBACK, et après que l'état d'origine sera restauré.

+4

Très bien, maintenant si je décide que j'aime les résultats, comment puis-je les enregistrer? 'FIN TRANSACTION;'? Geez, maintenant je dois aller jusqu'à Google ... * erre en arrière * La réponse était ['COMMIT'] (http://dev.mysql.com/doc/refman/5.6/en/commit.html) . – Zenexer

1

Copiez votre base de données à une base de données de test ou auto-générer un script d'importation. Que vous pouvez tester tout ce que vous voulez sur la base de données de test et le restaurer à nouveau en utilisant le script ou l'importation.

5

Si vous voulez juste voir combien de lignes seraient supprimées, pourquoi ne pas remplacer 'delete' par 'select count (*)'?