Pl / SQL更新触发器根据表上的更新操作更新排名

时间:2019-05-02 17:23:48

标签: sql

给出table_player

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

我想使用一个更新触发器,当一个人的得分改变时,它会自动更新玩家的排名,并且我也希望该排名列作为表中的新列保留。

1 个答案:

答案 0 :(得分:1)

这不是触发器的真正好用,因为1)您必须从要插入的表中进行选择,以及2)每次插入时都可能必须更新表中的所有行新的一行。除非您创建一个非常复杂的方案来避免这些错误,否则它们都可能导致数据变异。

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

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