通常、MAX(log_id)
を選択します logid_seq.nextval
と同じ値は提供されません 提供された。これがマルチユーザーシステムであると仮定すると、他のユーザーがより大きなlog_id
で別の行を挿入した可能性があります。 クエリが実行される前に挿入した行よりも値。
両方のINSERT
ステートメントは同じセッションで実行されます。最も簡単なオプションは、おそらくlogid_seq.currval
を使用することです。 2番目のINSERT
声明。 currval
現在のセッションに返されたシーケンスの最後の値を返すため、nextval
によって生成されたのと同じ値が常に返されます。 最初のステートメントを呼び出します。
INSERT INTO tableB (LOG_ID, RESPONSE_CODE, RESPONSE_MSG)
VALUES( logid_seq.currval, ?, ? )
または、RETURNING
を使用することもできます 最初のステートメントの句を使用して、シーケンス値をローカル変数にフェッチし、それを2番目のINSERT
で使用します。 声明。しかし、それはおそらく単にcurrval
を使用するよりも手間がかかります 。