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

OracleでJDBCバッチ挿入から生成されたキーを取得するにはどうすればよいですか?

    JDBC 4.1仕様、セクション13.6自動生成された値の取得 言う:

    getGeneratedKeysかどうかについては実装によって定義されます executeBatchを呼び出した後、生成された値を返します メソッド。

    したがって、ドライバーがバッチ更新で実際にサポートしているかどうかを確認する必要があります。 Philip O.の回答に示されているように、生成されたキーの取得は、Oracle 12 JDBC Standards Supportに記載されているバッチ更新ではサポートされていません:

    自動生成されたキーをバッチ更新と組み合わせることはできません。

    いずれにせよ、それがドライバーによってサポートされている場合は、ステートメントの準備を以下のコードに変更して、生成されたキーを取得するようにドライバーに指示する必要があります。

    ps = con.prepareStatement(insert, Statement.RETURN_GENERATED_KEYS);
    

    注:生成された他のキーの1つを使用する必要がある場合がありますprepareメソッド(prepareStatement(sql, columnIndexes) またはprepareStatement(sql, columnNames) )OracleはROW_IDを返すため 私の例の方法で。



    1. @JoinColumnとは何ですか?Hibernateでの使用方法

    2. 挑戦が始まりました!最速の数級数ジェネレータを作成するためのコミュニティの呼びかけ

    3. MySQL:rootユーザーを除くユーザー'test' @'localhost'(パスワード:YESを使用)のアクセスが拒否されました

    4. Oracleパイプライン関数の例