sql >> Database >  >> RDS >> Oracle

Oracle-reeks gebruiken om log-ID in 2 tabellen van jdbc in te voegen?

In het algemeen, het selecteren van de MAX(log_id) zal je niet dezelfde waarde geven als logid_seq.nextval mits. Ervan uitgaande dat dit een systeem voor meerdere gebruikers is, zou een andere gebruiker een andere rij kunnen hebben ingevoegd met een grotere log_id waarde dan de rij die u zojuist hebt ingevoegd voordat uw zoekopdracht werd uitgevoerd.

Ervan uitgaande dat zowel INSERT instructies in dezelfde sessie worden uitgevoerd, is de eenvoudigste optie waarschijnlijk het gebruik van de logid_seq.currval in de tweede INSERT uitspraak. currval retourneert de laatste waarde van de reeks die is geretourneerd naar de huidige sessie, zodat deze altijd dezelfde waarde retourneert die is gegenereerd door de nextval roep de eerste verklaring in.

INSERT INTO tableB (LOG_ID, RESPONSE_CODE, RESPONSE_MSG) 
  VALUES( logid_seq.currval, ?, ? )

Als alternatief kunt u de RETURNING . gebruiken clausule in uw eerste instructie om de reekswaarde in een lokale variabele op te halen en die te gebruiken in de tweede INSERT uitspraak. Maar dat is waarschijnlijk meer werk dan alleen de currval .



  1. MySQL hoe een if-bestaan-increment in een enkele query te doen

  2. Postgres - Sommen berekenen op basis van het resultaat van de som van een andere kolom

  3. Kan geen verbinding maken met AWS EC2 vanuit visuele studio (of waar dan ook)

  4. 7 manieren waarop Microsoft Access uw bedrijf kan helpen