Retour aux FAQ Bases de données
CENTRE D’AIDE · FAQBases de données2 min de lecture

Comment éviter d’exécuter deux fois la même modification en base ?

Concevez les écritures pour que les nouvelles tentatives soient sûres. Utilisez une clé métier unique, une transaction lorsque des changements liés doivent réussir ensemble et vérifiez le résultat précédent avant de répéter une opération au résultat incertain.

Bases de données

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.

Retour aux FAQ Bases de données