J'essaie d'écrire du code de base de données pour m'assurer qu'il n'est pas soumis aux conditions de concurrence, pour m'assurer que j'ai verrouillé les lignes ou les tables correctes. Mais je me demande souvent: mon code est-il correct? Est-il possible de forcer des conditions de concurrence existantes à se manifester? Je veux être sûr que si cela se produit dans un environnement de production, mon application fera ce qu'il faut.
Je sais généralement exactement quelle requête simultanée est susceptible de causer un problème, mais je ne sais pas comment les forcer à s'exécuter simultanément pour voir si le comportement correct se produit (par exemple, j'ai utilisé le bon type de verrou), que les bonnes erreurs sont jeté, etc.
Remarque: J'utilise PostgreSQL et Perl, donc si cela ne peut pas être répondu de manière générique, il devrait probablement être repensé en tant que tel.
Mise à jour: je préfère que la solution soit programmatique. De cette façon, je peux écrire des tests automatisés pour m'assurer qu'il n'y a pas de régressions.