Auto-incrementing fields may save you a call to the database, but I've come to appreciate sequences (where you get your unique id first, and then insert it into the database). And one (fairly) portable implementation is DBIx::Sequence.
Comment on Re: Getting ID of last row inserted into database