Rendre les tentatives intentionnelles
Un délai d’attente dépassé peut laisser le demandeur dans le doute sur la validation de l’écriture. Répéter un INSERT non idempotent peut créer un doublon même si la première demande a réussi. Une contrainte unique ou un upsert peut convenir si le modèle le permet.
Pour plusieurs changements liés, utilisez une transaction si l’opération le permet afin de tout valider ou annuler ensemble. Gardez les instructions ciblées et liez les valeurs au lieu de construire du SQL avec du texte non fiable.
Confirmer le résultat enregistré
Avant de réessayer après une erreur de connexion ou de workflow, interrogez un identifiant stable et examinez la ligne actuelle. Un délai dépassé ne prouve pas qu’aucune écriture n’a eu lieu ; distinguez l’échec d’un résultat inconnu.
Conservez si nécessaire la clé d’opération et les informations de modification dans l’historique. Pour les effets externes associés à une écriture, utilisez une file d’attente ou un état explicite afin d’éviter de répéter silencieusement notifications ou paiements.