EXPLIQUER fait l'affaire si vous utilisez MySQL 5.6 ou supérieur.
explain update whatever;
Si la requête est correcte, elle affiche le plan d'exécution. Sinon, il renvoie l'erreur de syntaxe.
Si vous utilisez une version inférieure de MySQL, je vois quelques options :
- L'option recommandée :Ayez une base de données de test prête qui reflète votre base de données de production au moins dans la structure . Idéalement, remplissez-le avec des données de test pour vérifier que la requête n'est pas seulement syntaxiquement correcte ; mais qu'il fonctionne comme prévu .
- Exécutez la requête dans le cadre d'une TRANSACTION qui est immédiatement annulée.
- Exécuter une version de la requête légèrement modifiée pour correspondre à NO ROWS.
Par exemple :
update table set col1 = @val1 where col2 = @val2;
Devient :
update table set col1 = @val1 where (col2 = @val2) and 1=0;
Donc, si vous utilisez la version 5.6 ou supérieure, le EXPLAIN
l'astuce est soignée. Sinon, les options 2 et 3 de la liste sont également des astuces intéressantes. Mais, vous devriez généralement toucher un développement serveur avec votre en développement requêtes quand même.