-510 THE TABLE DESIGNATED BY THE CURSOR OF THE UPDATE OR DELETE STATEMENT CANNOT BE MODIFIED
説明
アプリケーション・プログラムが、更新または削除できない表またはビューに対して、
UPDATE または DELETE WHERE CURRENT OF カーソル・ステートメントを実行しようとしました。 このエラーは、以下の理由で戻されることがあります。
- 読み取り専用ビューからの削除や、カーソルが FOR UPDATE 文節で定義されていない 場合の更新が実行された。
- ターゲット表がリモート・ロケーションに存在している場合で、ユーザーがカーソルを FOR FETCH ONLY として明示的に宣言したため、 または、アプリケーションが CURRENTDATA (NO) でバインドされてカーソルがあいまいであるために、 Db2® がブロック取り出しを行った。
- Db2 が並列処理を利用して DELETE WHERE CURRENT OF カーソル・ステートメントで 指定されたカーソルに関連する SELECT ステートメントを実行した場合、または カーソルが位置付けられてから (CURRENTDATA(NO) でバインドしたアプリケーション の未確定カーソルに対する ISO(CS) のセマンティクスに従って) 他のアプリケーションによって 変更されていないことを Db2 が保証できない行に対して DELETE WHERE CURRENT OF が 実行された。
- カーソルが INSTEAD OF UPDATE トリガーが定義されているビューを参照している (そのビューが更新可能ビューの場合でも)。
システムの処置
このステートメントを処理することはできません。オブジェクト表のデータの更新または削除は行われません。
プログラマーの応答
要求された UPDATE または DELETE は実行できません。
リモート表の場合は、DECLARE CURSOR を修正して、PLAN を再バインドしてください。
並列処理を使用するカーソルの場合、静的 SQL の DEGREE(1) BIND オプションを使うか、 または動的 SQL の CURRENT DEGREE 特殊レジスターを '1' に設定することによって、 並列照会処理を使用不可にしてください。
CURRENTDATA(NO) でバインドしたアプリケーション内のカーソルがあいまいな場合は、 カーソルがあいまいでないようにするか (FOR UPDATE OF で宣言する)、 アプリケーションを CURRENTDATA(YES) で再バインドしてください。
INSTEAD OF トリガーを持つビューについては、これらのトリガーをドロップしてください。
SQLSTATE
42828