Yes, but both men think they have the record.
So 'A' looses bigtime.
My version catches this.

Cal Evans wrote:

last man wins.

----- Original Message -----
From: "gerald_clark" <[EMAIL PROTECTED]>
To: "Cal Evans" <[EMAIL PROTECTED]>
Cc: "MySQL" <[EMAIL PROTECTED]>
Sent: Wednesday, April 02, 2003 11:10 AM
Subject: Re: How Many




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