1

Cobol : [コードを挿入]

 EVALUATE SQLCODE
           WHEN +000
            ...
           WHEN -803
             ...
           WHEN OTHER
             ...
       END-EVALUATE.

このコードは SQLCODE を評価し、重複するエントリはここで -803 によって処理されます。-803 エラーは AN INSERTED OR UPDATED VALUE IS INVALID BECAUSE THE INDEX IN INDEX SPACE indexspace-name CONSTRAAINS COLUMNS OF THE TABLE SOSE COLUMNS に重複する値を 2 つの行に含めることはできません。既存の行の RID は X レコード ID です。

つまり、重複キー エラーです。

Java では、通常、選択クエリを実行して同じことを行い、データベースに存在するエントリを探し、存在しない場合はレコードを挿入します。

Javaで-803の状況を処理する他の方法はありますか?

4

1 に答える 1

4

Java ではSQLException、エラー コードをキャッチしてテストする必要があります。

PreparedStatement stmt = ...;
try
{
    stmt.executeUpdate();
}
catch (SQLException e) {
    if (e.getErrorCode() == -803)
    {
        // handle duplicate entry
    }
    else
    {
        // handle other errors
    }
}

-803 はベンダー固有のエラー コードであるため、このコードは DB2 固有であることに注意してください。

于 2013-05-29T13:57:51.403 に答える