[Nottingham] SQLite and 'locking'

Alex Tibbles alex_tibbles at yahoo.co.uk
Wed Feb 21 08:52:03 GMT 2007


(apologies for top posting).

you might be able to achieve the same with:

UPDATE table SET status = 'Booked' WHERE id = 123 AND status <> 'Booked';
COMMIT;

if 0 rows are updated or you get an error, it means someone else commited the change first

----- Original Message ----
From: David Aldred <david at familyaldred.org.uk>
To: nottingham at mailman.lug.org.uk
Sent: Monday, 19 February, 2007 10:28:51 PM
Subject: [Nottingham] SQLite and 'locking'


There was a discussion here a bit ago about databases and (specifically) why 
MySQL wasn't always the best around - I've got a related question and want to 
check my understanding!

I want a routine which checks whether a 'status' field in a record 
is 'booked', and if it isn't changes it to 'booked' and updates 
the 'bookedby' field to show who's booked it.  Actually it's slightly more 
complex than that, but that's the basic issue.

I don't want more than one person able to get a booking, so if person A is 
between reading the status and changing it, person B's (and persons C..Z, of 
course!) shouldn't be able even to read the status.

If I do something like:

BEGIN EXCLUSIVE
<read the status and check it's not already booked>
<book what needs booking>
END

Does that achieve what I need?   I think it does....

-- 
David Aldred

_______________________________________________
Nottingham mailing list
Nottingham at mailman.lug.org.uk
https://mailman.lug.org.uk/mailman/listinfo/nottingham





		
___________________________________________________________ 
What kind of emailer are you? Find out today - get a free analysis of your email personality. Take the quiz at the Yahoo! Mail Championship. 
http://uk.rd.yahoo.com/evt=44106/*http://mail.yahoo.net/uk 



More information about the Nottingham mailing list