Ogólnie rzecz biorąc, wybierając MAX(log_id) nie da ci tej samej wartości, co logid_seq.nextval pod warunkiem, że. Zakładając, że jest to system wielu użytkowników, inny użytkownik mógł wstawić kolejny wiersz z większym log_id wartość niż wiersz, który właśnie wstawiłeś przed wykonaniem zapytania.
Zakładając, że oba INSERT instrukcje są uruchamiane w tej samej sesji, najprostszą opcją jest prawdopodobnie użycie logid_seq.currval w drugim INSERT oświadczenie. currval zwróci ostatnią wartość sekwencji, która została zwrócona do bieżącej sesji, więc zawsze zwróci tę samą wartość, która została wygenerowana przez nextval zadzwoń w pierwszym oświadczeniu.
INSERT INTO tableB (LOG_ID, RESPONSE_CODE, RESPONSE_MSG)
VALUES( logid_seq.currval, ?, ? )
Alternatywnie możesz użyć RETURNING klauzulę w pierwszej instrukcji, aby pobrać wartość sekwencji do zmiennej lokalnej i użyć jej w drugiej INSERT oświadczenie. Ale to prawdopodobnie więcej pracy niż po prostu użycie currval .