sql >> Databáze >  >> RDS >> Oracle

Pomocí sekvence Oracle vložit ID protokolu do 2 tabulek z jdbc?

Obecně platí, že výběr MAX(log_id) vám nedá stejnou hodnotu jako logid_seq.nextval pokud. Za předpokladu, že se jedná o víceuživatelský systém, mohl nějaký jiný uživatel vložit další řádek s větším log_id hodnotu než řádek, který jste právě vložili před provedením dotazu.

Za předpokladu, že obě INSERT příkazy se spouštějí ve stejné relaci, nejjednodušší možností je pravděpodobně použít logid_seq.currval ve druhém INSERT tvrzení. currval vrátí poslední hodnotu sekvence, která byla vrácena aktuální relaci, takže vždy vrátí stejnou hodnotu, která byla vygenerována nextval zavolejte v prvním příkazu.

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

Alternativně můžete použít RETURNING klauzule ve vašem prvním příkazu k načtení hodnoty sekvence do lokální proměnné a její použití ve druhém INSERT tvrzení. Ale to je pravděpodobně více práce než pouhé použití currval .



  1. Transakce PHP, MySQL, PDO - Lze použít rollBack() po zavolání commit()?

  2. Jak vytvořit a vložit objekt JSON pomocí dotazů MySQL?

  3. Dynamické připojení k MySQL

  4. Chyba připojení JDBC:nerozpoznané časové pásmo