我有一个具有这种结构的表:
ID NAME RANK
10 A 1
11 A 2
12 A 3
13 A 4
14 B 1
15 B 2
这个表很大,每分钟插入大约 500 行。为了保持每个组的顺序,按名称,我们使用了一个插入前触发器,如下所示:
begin
SELECT NVL(MAX(RANK+1),1) INTO RANK FROM tablename
WHERE NAME=:NEW.NAME;
end;
这很好用,但有时它会返回不正确的值,例如 (14,8,11,4,5) 而不是 (1,2,3,4,5)。我们调查了我们的代码,所以我们没有更新这个专栏。
可能是什么问题呢?如果这种排名方法是错误的,那么最好的方法是什么?