This question comes up a lot. You used general terms, so I can only answer you generally, but hopefully this starts a discussion. Email me if you have to.
You mentioned primary key, so I assume something's going into a database. If multiple users have access to a process, there is NO WAY of reserving a primary key until the data is actually inserted. Put another way, if user A starts on a process and there are 500 records in the database, we can assume that his record will be 501 only if nobody else uses the process until he's finished. In the web world, this doesn't happen.
Therefore, the only way I know to do this is to insert SOMETHING in the database to create a primary key, get that key's value, and take it along for the ride on each additional form page, and perform updates to the intial "skeleton" record.
Here is a general plan of attack for multiple forms: Have the first form enter some sort of "bookmark" info into the database (say user name and password). check the database for a duplicate username though and kick the form back if this is the case. If the username is new, This will result in a primary key being assigned. Immediately afterwards, use this SQL statement:
select primaryKey from table where username = [the name they selected].
Then, pass that key from form to form and flesh out the record either on each form or at the end (using hidden fields).
BY THE WAY, THE INTERFERENCE CONCEPT AND ASSIGNMENT OF A PRIMARY KEY IS A FUNDAMENTAL ISSUE THAT DATABASE PROGRAMMERS DEAL WITH. THE WAY I MENTIONED ABOVE WORKS FOR ME, I'D LOVE IT IF SOMEONE COULD TELL ME A MORE ELEGANT SOLUTION.