Timeline for How to prevent race conditions in a web application?
Current License: CC BY-SA 3.0
7 events
when toggle format | what | by | license | comment | |
---|---|---|---|---|---|
May 23, 2018 at 18:59 | comment | added | Alex Gordon | can you give an example of how to do this with sql server?\ | |
Apr 12, 2017 at 22:42 | comment | added | user251748 | Dataflex had a function called "reread()" which does what you describe. In the later versions, it was safe in a multiuser environment. And, indeed, it was the only way to get such interleaved updates to work. | |
Apr 10, 2017 at 14:45 | comment | added | user251748 | I maintained a PC distributed database product that used the fine-grained approach (against its local database copy): if one user changed the price and the other changed the description - no problem! Just like in real life. If two users changed the price - 2nd user gets an apology and tries their change again. No problem! This does not require locks except during the moment when data is being written to the database. It doesn't matter if one user goes to lunch while their change is on the screen and submits it later. For remote database changes, it was based on record timestamps. | |
Nov 26, 2014 at 8:44 | vote | accept | paj28 | ||
Nov 26, 2014 at 8:28 | comment | added | ProMisDev | Unfortunately, I don't know any frameworks that supports this out of the box. I don't think an edit confilict error message will be perceived as to frustrating, as long as it doesn't come up to often. Ultimately, it depends on the user load of the system wether you just check the timestamp or implement a more complex merging function. | |
Nov 25, 2014 at 15:26 | comment | added | paj28 | This sounds like the most practical approach. Do you know of any frameworks that implement this? I think the biggest problem with this scheme is that a simple "edit conflict" message will frustrate users, but attempting to merge the changesets (manually or automatically) is difficult. | |
Nov 25, 2014 at 12:54 | history | answered | ProMisDev | CC BY-SA 3.0 |