この構造のテーブルがあります:
ID NAME RANK
10 A 1
11 A 2
12 A 3
13 A 4
14 B 1
15 B 2
このテーブルは巨大で、毎分約 500 行が挿入されます。各グループの名前順を維持するために、次のような before insert トリガーを使用しています。
begin
SELECT NVL(MAX(RANK+1),1) INTO RANK FROM tablename
WHERE NAME=:NEW.NAME;
end;
これはうまく機能しますが、(1,2,3,4,5 の代わりに (14,8,11,4,5) など) 間違った値を返すことがあります。コードを調査したため、このコラムは更新しませんでした。
何が問題なのですか?このランキング方法が間違っているとすれば、それを行うための最良の方法は何ですか?