The issue I see with your timestamp method is that I don't want to allow 
the 2nd user to be able to edit it at the same time.  In this case they 
would be able to do a view on it.

Again, maybe I'm being anal here, but I don't like the idea of the field 
by field comparison and then write as this violates my rule of only one 
user performing an edit at a time.  Correct me if I'm wrong, but unless 
I'm misunderstanding, it also seems like you could end up causing major 
confusion for your users with that method.  If I edit text in one field 
based upon the value of another, but someone else is changing that field 
value, you could be making things worse...

--Jeff



On 5/9/2005 12:15 PM, Trey Rouse wrote:

> I take a different approach.
> 
> I record in the users session the id & timestamp of the record when they
> open it to edit.  I then check this timestamp when I go to update the
> record.
> 
> If the timestamps are the same, then I allow the update.  If they are not
> the same, I generally don't let the user save, but make them re-open the
> record.  On some apps I let them chose to save or not.
> 
> This is maybe an 'ass-backwards' way of handling row locking, but I find it
> works well enough for web apps.  The case doesn't come up all that often, I
> don't like the method of locking out other users when the record is opened,
> as 1. the user may only be looking at it. 2. the user editing might afk and
> come back after your timeout before saving.
> 
> The method I'm using only throws a warning/condition if record edit
> contention is actually encountered.
> 
> Sometimes people take this much further, and write the entire record to the
> session scope, then when the timestamps don't match do a field by field
> comparison, and if the fields being edited by user1 don't overwrite changes
> from user2, then commit just those changes.  I generally find this is more
> work than is necessary, but if you've got users that run into contention
> frequently, I suppose I might consider it.
> 
> 
> Trey Rouse
> Web Systems Manager - Rice University
> [EMAIL PROTECTED] - 713.348.4799
> 
> 
> -----Original Message-----
> From: Jeff Langevin [mailto:[EMAIL PROTECTED] 
> Sent: Monday, May 09, 2005 11:01 AM
> To: CF-Talk
> Subject: "Locking" a DB record while editing
> 
> I am curious to know how you folks have handled locking a database 
> record in a shared application.  Basically user 1 selects from a list of 
> records to edit.  Normally, I would then immediately go in an write a 
> timestamp that "locks" the record.  When user 2 comes I don't allow 
> him/her to edit that record as long as that timestamp is, say... no 
> older then 15 minutes.  If it is older, then the "timeout" has been 
> reached and I clear the lock.  This is pretty down and dirty way to 
> handle it.  How else do folks handle these situations?
> 
> --Jeff
> 
> 
> 
> 
> 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Logware (www.logware.us): a new and convenient web-based time tracking 
application. Start tracking and documenting hours spent on a project or with a 
client with Logware today. Try it for free with a 15 day trial account.
http://www.houseoffusion.com/banners/view.cfm?bannerid=67

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:206067
Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4
Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4
Unsubscribe: 
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54

Reply via email to