Oracle (挿入/更新/削除時) に row_num 分析関数を使用して行番号を割り当てるように強制する方法はありますか?
私が何を意味するかを説明するためのコード例:
select foo,bar,baz
row_number() over (partition by bang order by some_date desc) rn
from my_table
上記のクエリは、パーティション句に基づいて行番号を割り当てます。
今、クエリを実行して、rownumber = XI でこれを実行できるようにしたい場合:
select foo,bar,baz
from my_table
where rownumber=1
この理由は、クエリのオーバーヘッドを回避し、システムで発生する頻度がはるかに低い DDL ステートメントに戻すためです。もう一度質問ですが、このようなことは可能ですか?
コメント
新しい挿入/更新/削除のたびに、テーブルのすべての行が更新される可能性があります...これは、大量のログ (およびロック) になる可能性があります。データが本質的に静的である場合は、ロードまたは更新するたびに行番号を再生成してください。
更新/削除の制約を取り除いても、特に一時的なオブジェクトがこれを駆動する場合、この推論は依然として有効であるとは思いません。