Alla ricerca di una consulenza pratica:Select-locking in Rails con MySQL
Supponiamo di avere un oggetto Account con attributo limite. Ogni giorno ci possono essere n pagamenti, con somma dei loro importi fino al limite del conto. Quando crea un nuovo pagamento, controlla se il suo importo + gli importi degli altri pagamenti del giorno sono ancora entro il limite dell'account e salva il record o visualizza l'errore.
Ora, supponiamo di avere un account con limite 100 $, e contemporaneamente vengono creati due pagamenti di 99 $. Ciascuno farebbe una selezione, vedrà che non c'è nulla e procederà a salvarsi, con il risultato di salvare 198 $ totali.
Cosa faresti? Stavo pensando di emettere un blocco di scrittura sulla tabella dei pagamenti all'inizio della transazione, ma sembra abbastanza pesante, visto che mi interessa solo non permettere che i pagamenti appartenenti a un account specifico non vengano letti da altre transazioni. Ci sono altre opzioni, modi migliori per gestire questa situazione?
"il momento di leggere le informazioni dalla tabella , qualsiasi tentativo di aggiornare o leggere quei record dovrà attendere fino a quella transazione "- cosa succede se la selezione non produce record? o nel caso del richiedente-domanda, sta interrogando per il valore aggregato dei record esistenti prima di aggiungerne di nuovi. come sa mysql cosa bloccare? –