In generale, selezionando il MAX(log_id)
non ti darà lo stesso valore che logid_seq.nextval
fornito. Supponendo che si tratti di un sistema multiutente, un altro utente potrebbe aver inserito un'altra riga con un log_id
più grande valore rispetto alla riga appena inserita prima dell'esecuzione della query.
Supponendo che entrambi INSERT
le istruzioni vengono eseguite nella stessa sessione, l'opzione più semplice è probabilmente quella di utilizzare logid_seq.currval
nel secondo INSERT
dichiarazione. currval
restituirà l'ultimo valore della sequenza che è stato restituito alla sessione corrente, quindi restituirà sempre lo stesso valore generato da nextval
chiama nella prima affermazione.
INSERT INTO tableB (LOG_ID, RESPONSE_CODE, RESPONSE_MSG)
VALUES( logid_seq.currval, ?, ? )
In alternativa, puoi utilizzare il RETURNING
clausola nella prima istruzione per recuperare il valore della sequenza in una variabile locale e utilizzarlo nella seconda INSERT
dichiarazione. Ma probabilmente è più lavoro che usare semplicemente il currval
.