in reply to Last ID

I would suggest holding off on displaying the number until after they've submitted the ticket.

Why? Well, in order to 'reserve' a new ID number, no matter what method you use (almost -- you could keep a whole separate sequence and just update that when you request a new ID), you will have to actually insert a record into the database with that ID. Now, if the user changes their mind/crashes their computer/wanders off never to return (you know, all those annoying human things users do), you have a blank ticket sitting there in the database that will never get filled in.

Sure, you could write a cleanup script to run periodically and delete those blank rows, but why bother? And what about all the reports and queries before the cleanup runs? Now you also need some extra ticket state to indicate 'initiated but not submitted'. Blah.

That said, the Oracle sequence method will work just fine, but the select max(id)+1 method is more portable.