sql >> データベース >  >> RDS >> Oracle

Oracleシーケンスを使用してログIDをjdbcから2つのテーブルに挿入しますか?

    通常、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を使用するよりも手間がかかります 。



    1. PostgreSQLコマンドラインユーティリティ(psql)を終了する方法

    2. JavaのVarargsに相当するOracle

    3. MariaDBでのGET_FORMAT()のしくみ

    4. mysql_fetch_array()は、パラメーター1がリソースであり、文字列が指定されていることを想定しています。