En general, seleccionando MAX(log_id)
no le dará el mismo valor que logid_seq.nextval
previsto. Suponiendo que se trata de un sistema multiusuario, algún otro usuario podría haber insertado otra fila con un log_id
más grande valor que la fila que acaba de insertar antes de que se ejecute su consulta.
Suponiendo que ambos INSERT
las declaraciones se ejecutan en la misma sesión, la opción más simple es probablemente usar el logid_seq.currval
en el segundo INSERT
declaración. currval
devolverá el último valor de la secuencia que se devolvió a la sesión actual, por lo que siempre devolverá el mismo valor que generó nextval
llamar en la primera instrucción.
INSERT INTO tableB (LOG_ID, RESPONSE_CODE, RESPONSE_MSG)
VALUES( logid_seq.currval, ?, ? )
Alternativamente, podría usar el RETURNING
cláusula en su primera declaración para obtener el valor de la secuencia en una variable local y usar eso en el segundo INSERT
declaración. Pero eso es probablemente más trabajo que simplemente usar el currval
.