in reply to simple MySQL prob

Unless your application can be guaranteed to be running one instance at a time (ie, not a web CGI), you need to care about transactions.

Example:

Instance 1: Does key XXX exist?
DB:         Nope.
Instance 2: Does key XXX exist?
DB:         Nope
Instance 1: Please insert new row with key XXX
DB:         Done!
Instance 2: Please insert new row with key XXX
DB:         <Explosion>
Check the DBI manpage for details on transaction support. If you aren't using DBI, or your database doesn't support transactions, you should use one that does :-) Alternatively, code your database schema and application such that it doesn't need to do such a check. This may well be possible, but it's impossible to say without knowing your application.