Haz que los reintentos sean deliberados
Un tiempo de espera agotado puede dejar dudas sobre si la escritura se confirmó. Repetir una inserción no idempotente puede crear un duplicado aunque la primera solicitud se completara. Usa una restricción única o un upsert si el modelo de datos lo permite.
Para varios cambios relacionados, usa una transacción si la operación de base de datos lo admite, de modo que se confirmen o reviertan juntos. Mantén las instrucciones acotadas y vincula valores en vez de construir SQL con texto no confiable.
Confirma el resultado almacenado
Antes de reintentar tras un error de conexión o workflow, consulta un identificador estable e inspecciona la fila actual. Un tiempo de espera no demuestra que no se escribiera nada; distingue entre una solicitud fallida y un resultado desconocido.
Registra la clave de operación y la información de cambios en el historial cuando sea adecuado. Para efectos externos ligados a una escritura, usa una cola de salida o un estado explícito para evitar repetir avisos o pagos sin darte cuenta.