A    Checks for empty
B     Checks for empty
A    Updates
A    Reads ( and owns record )
B    Updates
B    Reads ( and owns record )

Now What?

Cal Evans wrote:

No.  You check for empty. update, check again to make sure you now own it.
The userid is either going to be you OR someone else. not both.  It it's you
then you own the record.  If it's someone else then someone slipped in and
grabbed it from you.

=C=
----- Original Message -----
From: "gerald_clark" <[EMAIL PROTECTED]>
To: "Cal Evans" <[EMAIL PROTECTED]>
Cc: "Ed Kiefer" <[EMAIL PROTECTED]>; "MySQL" <[EMAIL PROTECTED]>
Sent: Wednesday, April 02, 2003 9:22 AM
Subject: Re: How Many




Cal Evans wrote:



Ed,

1: It depends on your hardware. I don't think MySQL imposes a


restriction.


2: It doesn't work that way. It's not like VFP or Access where you


'edit' a


record. You can SELECT the contents of a record, you can manipulate them


and


then you can UPDATE that record (assuming you have a primary key) but the
last person to issue an update is the one who wins.

One thing I've done in the past is use 'soft locks'. Basically if you


HAVE


to insure that while someone has requested the right to edit a record, no
one else can do it you have to enforce it in your own software.

A soft lock is simply a couple of fields in a record. usually a userID


and a


timedate field. When someone requests permission to edit a record I do:

1: Make sure the userid field is empty
2: UPDATE the record with this users userid and the current timedate.
3: SELECT the record again and make sure that this user's userid is the
current one. (Keeps someone from slipping in on ya.)



There is still a window of opportunity for an error here.
You can both check for empty, then both update and read.
Now two users believe they have the record.
Update therecord set userid=concat(userid,'|','me') where id=thisnumber;
select userid from the record where id=thisnumber.

Now:
If the user is '|me' ,  I am the owner.
If it is '|me|someoneelse' , I am still the owner.
If it is '|someoneelse|me', I am not the owner.



4: Allow them to edit the record
5: Commit the record and clear the userid.

If there IS a userid already on the record, I check the timestamp. If


it's


more than x time units (10 minutes, 2 hours, 3 days, etc) old, I


invalidate


the lock by going to step 2 anyhow.

Clear as mud?

=C=
----- Original Message -----
From: "Ed Kiefer" <[EMAIL PROTECTED]>
To: "MySQL" <[EMAIL PROTECTED]>
Sent: Tuesday, April 01, 2003 7:40 AM
Subject: How Many






How many people can be accessing the same mysql database at the same


time?


Can several people work on the same record at the same time?


-- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]











-- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]











-- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]



Reply via email to