Sinon, si tu es sûr de n'avoir qu'un seul thread qui insère des valeurs, tu récupères cet id avec un "select max(id) from ta_table" avant la requête d'après... ou dedans, puisque tu peux faire un "insert into table2 values (select max(id) from table1, ...)" ...
A partir de là, si tu ne nous fournis pas plus de code, ça va être difficile à débugger...