Em geral, selecionando o
MAX(log_id)
não fornecerá o mesmo valor que logid_seq.nextval
forneceu. Assumindo que este é um sistema multiusuário, algum outro usuário poderia ter inserido outra linha com um log_id
maior valor do que a linha que você acabou de inserir antes de sua consulta ser executada. Assumindo que tanto
INSERT
instruções são executadas na mesma sessão, a opção mais simples é provavelmente usar o logid_seq.currval
no segundo INSERT
declaração. currval
retornará o último valor da sequência que foi retornada para a sessão atual, portanto, sempre retornará o mesmo valor que foi gerado pelo nextval
chamar na primeira instrução. INSERT INTO tableB (LOG_ID, RESPONSE_CODE, RESPONSE_MSG)
VALUES( logid_seq.currval, ?, ? )
Alternativamente, você pode usar o
RETURNING
cláusula em sua primeira instrução para buscar o valor da sequência em uma variável local e usá-la no segundo INSERT
declaração. Mas isso provavelmente é mais trabalhoso do que simplesmente usar o currval
.