Une astuce à la noix mais bon... Ca peut marcher dans ton cas : tu "commences" ton insertion en mettant tous les champs à NULL, tu récupères le last insert id avec mysql_insert_id(), puis tu fais ce que t'as à faire, et tu "finis" ton insertion à la fin, en faisant un UPDATE.
Par exemple, sur un site marchand, un type veut passer sa commande. Tu veux lui afficher son numéro de commande, qui est l'id de ta table commandes. Tu fais ton insert tout en haut de ta page, tu récupères le last insert id, tu lui affiches sa jolie page, avec son joli num de commande, ton formulaire pour qu'il renseigne les champs qu'il faut (genre son adresse ou des trucs comme ça) puis quand il clique sur OK, paf tu fais ton update avec les valeurs qu'il à entrées.
Monsieur Bricolage, quand tu nous tiens. Mais ça marche. En revanche faut faire gaffe si le type fait une connerie (par exemple il se barre sans avoir rempli le formulaire), à supprimer ta ligne qui contient plein de NULL sinon ta base va ressembler à rien en moins de 2. Trigger ? procédure stockée ? j'en sais rien, je dis p-e n'importe quoi, mais il faut faire gaffe.