I allmänhet väljer du MAX(log_id)
kommer inte att ge dig samma värde som logid_seq.nextval
försedd. Förutsatt att detta är ett fleranvändarsystem, kunde någon annan användare ha infogat en annan rad med ett större log_id
värde än raden du precis infogade innan din fråga kördes.
Förutsatt att både INSERT
uttalanden körs i samma session, det enklaste alternativet är förmodligen att använda logid_seq.currval
i den andra INSERT
påstående. currval
returnerar det sista värdet av sekvensen som returnerades till den aktuella sessionen så att det alltid returnerar samma värde som genererades av nextval
ring in det första uttalandet.
INSERT INTO tableB (LOG_ID, RESPONSE_CODE, RESPONSE_MSG)
VALUES( logid_seq.currval, ?, ? )
Alternativt kan du använda RETURNING
sats i din första sats för att hämta sekvensvärdet till en lokal variabel och använd den i den andra INSERT
påstående. Men det är förmodligen mer arbete än att bara använda currval
.