私は、PLSQLブロックに以下のFOR LOOPを持っています。それぞれの行をロックするためにFOR UPDATE句を使用したいと思います。しかし、コードを実行すると、背中次の例外を提供します:SELECT .. FOR UPDATEはエラー "DISTINCT、GROUP BYなどでビューからFOR UPDATEを選択できません"
ORA-02014:私はそれを見上げなど、DISTINCT、GROUP BYを持つビューからUPDATE FOR
を選択することはできませんが、正直なところ、私は説明を理解していないので、私は今それを解決することはできません。
誰でもここで何が起こっているのか、その問題を解決する方法を包括的に説明できますか?
EDIR:忘れてしまいましたが、my_tableは表示されません。通常のテーブルです。
エラーメッセージには、表示にDISTINCT、GROUP BYなどが使用されている場合、FOR UPDATEを選択できないことが明示されています。その理由は、このようなビューでは、ビュー内の行と、基礎となる表の行との間に1対1の関係は存在しないためです。したがって、RDBMSは、基礎となる表でどのレコードをロックする必要があるかを認識せず、そうすることを拒否します。 – JimmyB
可能な複製https://stackoverflow.com/questions/3166615/how-to-work-around-ora-02014-cannot-select-for-update-from-view-with-distinct –
お読みください:[最新の情報に更新選択のN行](https://asktom.oracle.com/pls/apex/asktom.search?tag=update-top-n-row-of-a-select) –