Buscando un consejo de mejores prácticas:Bloqueo selectivo en rieles con MySQL
Supongamos que tengo un objeto Cuenta con atributo de límite. Cada día puede haber n pagos, con la suma de sus cantidades hasta el límite de la cuenta. Al crear un nuevo pago, verifica si el importe + los montos de otros pagos del día aún se encuentran dentro del límite de la cuenta y guarda el registro o muestra un error.
Supongamos ahora que tengo una cuenta con un límite de 100 $ y, al mismo tiempo, se están creando dos pagos de 99 $. Cada uno haría una selección, vería que no hay nada allí y procedería a guardarse a sí mismo, lo que resultaría en un ahorro de $ 198.
¿Qué harías al respecto? Estaba pensando en emitir un bloqueo de escritura en la tabla de pagos al inicio de la transacción, pero parece ser bastante torpe, ya que realmente solo me importa no permitir que los pagos pertenecientes a una cuenta específica no sean leídos por otras transacciones. ¿Hay alguna otra opción, mejores formas de manejar esta situación?
"el momento en que leen la información de la tabla , cualquier intento de actualizar o leer esos registros tendrá que esperar hasta esa transacción "- ¿y si aparece el selecto sin registros? o en el caso del preguntador, está consultando el valor agregado de los registros existentes antes de agregar nuevos. ¿cómo sabe mysql qué bloquear? –