Pl/SQL update触发器,用于在对表执行更新操作时更新排名

Pl/SQL update触发器,用于在对表执行更新操作时更新排名,sql,Sql,给定桌位玩家 Players. Score A. 34 B. 45 C. 34 D. 20 我想使用一个更新触发器,当一个人的得分发生变化时,它会自动更新一个球员的排名,我还想让这个排名列作为新的列保留在表中。这对触发器来说不是一个很好的用途,因为1你必须从插入的表中选择,2你可能必须选择每次插入新行时更新表中的所有行。除非您创建一个非常复杂的方案来避免它们,否则这两种情况都可能导致数据错误的突变

给定桌位玩家

Players.      Score
A.            34
B.            45
C.            34
D.            20

我想使用一个更新触发器,当一个人的得分发生变化时,它会自动更新一个球员的排名,我还想让这个排名列作为新的列保留在表中。

这对触发器来说不是一个很好的用途,因为1你必须从插入的表中选择,2你可能必须选择每次插入新行时更新表中的所有行。除非您创建一个非常复杂的方案来避免它们,否则这两种情况都可能导致数据错误的突变

然而,视图可以有效地完成同样的事情。唯一的区别是,视图不存储数据,每次访问表时,它只需进行排名计算。如果您的数据库支持分析功能,则这将非常简单:

CREATE VIEW table_player_rank AS
SELECT player, score, rank() OVER (ORDER BY score) AS player_rank 
FROM table_player;