[Nottingham] SQLite and 'locking'

Ovid publiustemp-nlug at yahoo.com
Tue Feb 27 12:06:01 GMT 2007

--- Martin <martin at ml1.co.uk> wrote:

> Is not the question then:
> Has the seat really not been booked?
> Or was there an error in the booking where a booking has been made
> but
> the booker's name errored out to NULL?
> Would it not be better to have the special person's name "NoOne" and
> then ensure that there is noone in the world whom out of
> perniciousness
> against IT have called themselves "NoOne"?

No!  This now introduces a special case which introduces even more
potential bugs.

  my ($not_booked) = $dbh->selectrow_array(<<'END_SQL', undef,
    SELECT count(*)
    FROM   seats
    WHERE  booked_by = ?

Yay!  All seats are booked :)

Um, no they're not :)

Don't deliberately introduce special cases in code or databases unless
you have no other choice.  Just go with two tables and the problem goes

  FROM   seats 
  WHERE  id NOT IN (SELECT seat_id FROM seats_booked)

No more ambiguity and no special case.



Buy the book -- http://www.oreilly.com/catalog/perlhks/
Perl and CGI -- http://users.easystreet.com/ovid/cgi_course/

More information about the Nottingham mailing list