Generelt vælges MAX(log_id)
vil ikke give dig den samme værdi som logid_seq.nextval
stillet til rådighed. Hvis det antages, at dette er et flerbrugersystem, kunne en anden bruger have indsat en anden række med et større log_id
værdi end den række, du lige indsatte, før din forespørgsel blev udført.
Forudsat at både INSERT
sætninger køres i samme session, er den enkleste mulighed sandsynligvis at bruge logid_seq.currval
i den anden INSERT
udmelding. currval
returnerer den sidste værdi af sekvensen, der blev returneret til den aktuelle session, så den altid returnerer den samme værdi, som blev genereret af nextval
indkald den første erklæring.
INSERT INTO tableB (LOG_ID, RESPONSE_CODE, RESPONSE_MSG)
VALUES( logid_seq.currval, ?, ? )
Alternativt kan du bruge RETURNING
klausul i din første sætning for at hente sekvensværdien ind i en lokal variabel og bruge den i den anden INSERT
udmelding. Men det er sandsynligvis mere arbejde end blot at bruge currval
.